php - Mysql查询使用WHEN和AND更新具有多个条件的多列

标签 php mysql

我正在使用 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')

enter image description here

最佳答案

这解决了问题:

   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 子句正在获取 senderreceiver92 的行。这些设置正确。它还获取值不是 92 的行。这些设置为 NULL,因为没有 ELSE 子句。

关于php - Mysql查询使用WHEN和AND更新具有多个条件的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25677736/

相关文章:

php - 为什么使用redis进行websocket通信?

php - PHP正则表达式更改YouTube链接到视频

javascript - JQuery 不会从偶数链接更改 div 的内容?

PHP返回多个字符串

mysql - 使用 MySQL 数据作为 Google map 人口统计数据源

php - 在mysql列中插入和删除值

php - 顺序和选择子句中的 Full Group BY 错误

jquery - 是否可以使用 Jquery 检查 tomcat 服务器是否在端口 8080 上运行?

java - Hibernate ORM 建模复合键何时将数据插入 MYSQL

php - mysql 根据连接查询和最新日期时间获取所有行