我正在尝试运行如下所示的 CASE 语句:
UPDATE table SET
COL1 = CASE WHEN COL1 = '0' then 'something' else COL1 end,
COL2 = CASE WHEN COL2 = '0' then 'something' else COL2 end,
COL3 = CASE WHEN COL3 = '0' then 'something' else COL3 end
WHERE ID = '$id_example'
但我只想执行第一个“TRUE”的 CASE。
编辑:
UPDATE utskick SET
DELIMITER //
CREATE FUNCTION f()
BEGIN
CASE
WHEN datum_1 = '0000-00-00' THEN datum_1 = '2020-01-01' ELSE datum_1//
WHEN datum_2 = '0000-00-00' THEN datum_2 = '2020-01-01' ELSE datum_2//
WHEN datum_3 = '0000-00-00' THEN datum_3 = '2020-01-01' ELSE datum_3//
END CASE //
END //
DELIMITER;
CALL f()
WHERE kund_id = '14'
编辑2:
UPDATE table SET
CASE
date_1 WHEN date_1 = '0000-00-00' THEN '2020-01-01'
ELSE
CASE date_2 WHEN date_2 = '0000-00-00' THEN '2020-01-01'
ELSE
CASE date_3 WHEN date_3 = '0000-00-00' THEN '2020-01-01'
END
END
END
WHERE id = 23
我收到此错误:
1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 2 行的 'CASE datum_1 WHEN datum_1 = '0000-00-00' THEN '2020-01-01' ELSE' 附近使用的正确语法
最佳答案
尝试
WHEN (COL3 = '0' AND NOT (COL1 = '0' OR COL2 = '0')) ...
WHEN (COL2 = '0' AND NOT (COL1 = '0')) ...
WHEN COL1 = '0' ...
所以只有想要的时候才是正确的
关于MYSQL CASE 语句(if/else),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342342/