我想做的是在一个非常简单的 3 列数据库中设置一些字段,我用它来管理一些复选框。
如果 id 在列表中,我想将 col_2 设置为 1,保持 col_3 状态不变。但如果 id 不在列表中,则将 col_2 和 col_3 设置为 0。
这是我目前所拥有的,它不起作用,因为它给了我一些警告并更改了 col_3 的值:
UPDATE t
SET col_2 =
CASE
WHEN id IN (list) THEN 1
WHEN id NOT IN (list) THEN 0
END,
col_3 =
CASE
WHEN id NOT IN (list) THEN 0
END
WHERE id IS NOT NULL;
感谢任何帮助:)
最佳答案
这是保持 col_3 不变的方法
UPDATE t
SET col_2 =
CASE
WHEN id IN (list) THEN 1
WHEN id NOT IN (list) THEN 0
END,
col_3 =
CASE
WHEN id NOT IN (list) THEN 0
ELSE col_3 --this
END
WHERE id IS NOT NULL;
关于您的警告,我们没有足够的信息
关于MYSQL WHEN CASE THEN 什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15136152/