Кажется немного странным, что вы вставляете строки с одним столбцом в таблицу. Это не неверно, но это немного странно.
Сначала напишите инструкцию SELECT. Обратите внимание: IF
не является допустимым ключевым словом в MySQL. Ближайшим эквивалентом ANSI является выражение CASE
. И MySQL также предлагает нестандартную функцию IF()
.
SELECT CASE
WHEN t.hi > t.ot THEN t.hi
WHEN t.wc < t.ot THEN t.wc
ELSE t.ot
END AS `at`
FROM archive t
Чтобы проверить это, вы, вероятно, хотите, чтобы включить некоторые другие столбцы в списке SELECT, так что вы можете проверить результат и/или включать некоторые предикаты в ИНЕКЕ.
SELECT CASE
WHEN t.hi > t.ot THEN t.hi
WHEN t.wc < t.ot THEN t.wc
ELSE t.ot
END AS `at`
, t.hi
, t.wc
, t.ot
FROM archive t
Это просто для тестирования. После того, как вы получили ВЫБРАТЬ, который возвращается строки, которые вы хотите вставить, а затем непосредственно перед SELECT
добавить
INSERT INTO variations (`at`)
и вы будете хорошо идти.
ПРИМЕЧАНИЕ: Это не обязательным для включения имени столбца «at» в backticks, так как это не зарезервированное слово MySQL. Но я склоняюсь к обратным выводам вокруг всех идентификаторов (например, имен столбцов), которые являются ключевыми словами MySQL (даже если они не являются зарезервированными словами.)
У MySQL есть альтернативы выражению CASE
. Эквивалентный результат может быть получен с выражением, которое устанавливает функции MySQL IF()
. Например:
SELECT IF(t.hi>t.ot,t.hi,IF(t.wc<t.ot,t.wc,t.ot)) AS `at`
FROM archive t
Примечание: Выражение IF(x,y,z)
заставляет MySQL оценить x
как логическое значение, и если x
имеет значение TRUE, то вернуть y
еще вернуться z
.
Не вставлять утверждения, как правило, в них есть предложение VALUES? –
Вы не можете использовать 'IF' в запросе. Вы должны использовать ['CASE'] (https://dev.mysql.com/doc/refman/5.7/en/case.html). Вы должны проконсультироваться с документацией по синтаксису для каждого утверждения при попытке использовать его, что поможет вам найти решение. – tadman