Я просматривал форумы. Я проверил несколько разных методов. Я просто не могу заставить это работать.Дело MySQL в обновлении
ЦЕЛЬ:
Update в следующем столбце, если ответ существует в предыдущей колонке
Q1 в этот момент NULL и я хочу установить 1
Q2 IS NULL и я хочу его остаться NULL, если Q1 IS NULL, если Q1 есть ответ, обновить этот столбец 1
ПРОБЛЕМА:
Обе колонны всегда обновление до 1
ПОПЫТКА:
UPDATE Story1_Responses
SET Q1 = IFNULL(Q1,'1'),
Q2 = CASE WHEN Q1 IS NULL THEN NULL ELSE '1' END
WHERE UserID = 16
UPDATE Story1_Responses
SET Q1 = IFNULL(Q1,'1'),
Q2 = CASE WHEN IFNULL(Q1,'') = '' THEN NULL ELSE '1' END
WHERE UserID = 16
UPDATE Story1_Responses
SET Q1 = IFNULL(Q1,'1'),
Q2 = CASE WHEN COALESCE(Q1, '') = '' THEN NULL ELSE '1' END
WHERE UserID = 16
UPDATE Story1_Responses
SET Q1 = IFNULL(Q1,'1'),
Q2 = CASE WHEN Q1 IS NOT NULL THEN '1' ELSE IFNULL(Q2,NULL) END
WHERE UserID = 16
МЫСЛЬ:
Мне кажется, что MySQL обновляет первый столбец перед началом второго колонке оценивается, даже если они находятся в том же выполнении инструкции обновления.
"Q2 IS NULL, и я хочу, чтобы остаться NULL, если Q1 IS NULL, если Q1 есть ответ, обновить этот столбец 1" - что, если 'Q2 НЕ NULL'? Оставить его нетронутым? –
Существует также функция ['IF()'] (http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_if). – tadman
Правильный Питер, в конечном итоге у меня есть 10 столбцов, и я просто хочу, чтобы они сохранили свою ценность, если они есть, иначе либо будет null, если предыдущий вопрос не имеет ответа, либо обновите, если это следующий вопрос в очереди. –