Мне нужно создать новую таблицу и скопировать данные из второй таблицы. После этого заказывается по имени поля, но это переупорядочение не работает. Пример. Я создаю новую таблицу и копирую данные из второй таблицы (поле pizzaName = a, b, c) после того, как она изменит порядок в каждом случае/когда. Вот мой код:
CREATE TABLE secondTable (
pizzaName VARCHAR(20) NOT NULL,
lowSize TINYINT NOT NULL,
mediumSize TINYINT NOT NULL,
largeSize TINYINT NOT NULL,
PRIMARY KEY (pizzaName),
UNIQUE INDEX pizzaName_UNIQUE (pizzaName ASC) VISIBLE
) AS SELECT * FROM firstTable ORDER BY
CASE
WHEN pizzaName = 'c' THEN 1
WHEN pizzaName = 'a' THEN 2
WHEN pizzaName = 'b' THEN 3
END;
Вам нужно разделить это на два.
Стандарт SQL не определяет порядок хранения данных в базе данных - он логически неактуальен (хотя на практике кластерные индексы влияют на порядок). Невозможно указать порядок, в котором хранятся данные, кроме создания кластерного индекса, но который не поддерживается повсеместно.
То, что вы можете сделать, это указать порядок, в котором вы извлекаете данные при запросе - то, что делает предложение "order by".
Итак, шаг 1 состоит в том, чтобы создать копию таблицы (не знаете, почему вы хотите это сделать, но предположите, что это необходимо):
CREATE TABLE secondTable (
pizzaName VARCHAR(20) NOT NULL,
lowSize TINYINT NOT NULL,
mediumSize TINYINT NOT NULL,
largeSize TINYINT NOT NULL,
PRIMARY KEY (pizzaName),
UNIQUE INDEX pizzaName_UNIQUE (pizzaName ASC) VISIBLE
) AS SELECT * FROM firstTable
Шаг 2: извлечение данных из вашей копии:
SELECT * FROM secondTable ORDER BY
CASE
WHEN pizzaName = 'c' THEN 1
WHEN pizzaName = 'a' THEN 2
WHEN pizzaName = 'b' THEN 3