Как обновить таблицу по одной строке с выбором условий CASE?
Написал запрос на обновление поля `DateClose` в таблице `Work`, которая в зависимости от наличия или же отсутствия значения в поле `DateClose` по индексу `Work`.id = 6, должна менять значения с NULL на '2021-04-26 21:34:30' и обратно...
При выполнении выдает совпадение по одной строчке (как и предполагалось) но никаких изменений не происходит. В чем я ошибся?
UPDATE `Work` SET `DateClose` = ( CASE `DateClose` WHEN `DateClose` IS NULL THEN `DateClose` = '2021-04-26 21:34:30' ELSE `DateClose` = NULL END ) WHERE `Work`.id = 6;
Лентюй, а чего ошибку писать? синтаксически - запрос корректен. Это логически он бред бредом... но формально никто не запрещал сравнивать datetime и boolean/integer после соотв. приведения типов.
Vampire016, у CASE есть две формы - определитесь какая подходит, и используйте её. Не надо устраивать смесь - половинка одной формы, половинка другой... получится такая же хрень, как и в этот раз.
Спасибо, заработало, хоть я до сих пор и не понимаю почему у меня до этого не выходило... Но да ладно, работает и фиг с ним, мне все-равно нужно для написания программы для ВКР в универе и я заранее решил эту проблему программно, но не хотелось, чтоб код был загромождён излишними конструкциями... Так что ты сэкономил мне время и количество строк кода.