我正在使用 2 个条件将 sql UPDATE 写入 2 个列。在我运行 sql 之前,sender_del_flag 和 receiver_del_flag 都是 0,但是在我运行这个之后一些值返回 null。我想知道为什么它变成了空。如何解决这个问题?
UPDATE `messages` SET
receiver_del_flag = CASE
WHEN `id`='4' AND receiver='92' THEN '1'
WHEN `id`='6' AND receiver='92' THEN '1'
WHEN `id`='8' AND receiver='92' THEN '1'
END,
sender_del_flag = CASE
WHEN `id`='4' AND sender='92' THEN '1'
WHEN `id`='6' AND sender='92' THEN '1'
WHEN `id`='8' AND sender='92' THEN '1'
END
WHERE id IN ('4', '6', '8')
最佳答案
这解决了问题:
UPDATE `messages` SET
receiver_del_flag = CASE
WHEN `id`='4' AND receiver='92' THEN '1'
WHEN `id`='6' AND receiver='92' THEN '1'
WHEN `id`='8' AND receiver='92' THEN '1'
ELSE receiver_del_flag
END,
sender_del_flag = CASE
WHEN `id`='4' AND sender='92' THEN '1'
WHEN `id`='6' AND sender='92' THEN '1'
WHEN `id`='8' AND sender='92' THEN '1'
ELSE sender_del_flag
END
WHERE id IN ('4', '6', '8');
您的 where
子句正在获取 sender
和 receiver
为 92
的行。这些设置正确。它还获取值不是 92
的行。这些设置为 NULL
,因为没有 ELSE
子句。
关于php - Mysql查询使用WHEN和AND更新具有多个条件的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25677736/