我正在使用2个条件将sql UPDATE写入2列。在我运行sql之前,sender_del_flag和receiver_del_flag都是0但是在我运行之后,一些值返回null。我想知道为什么它变成了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')
答案 0 :(得分:5)
这解决了问题:
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
子句。