`
zhaojian0910
  • 浏览: 47169 次
社区版块
存档分类
最新评论

mysql update 使用 WHEN/THEN/ELSE/END 的时候非WHEN的数据被改成null

 
阅读更多

 

先查看一下数据

 

SELECT b.email_remind_id,b.send_status FROM b_email_msg_remind  b;


 然后执行

UPDATE b_email_msg_remind 
SET 
    send_status =CASE 
        WHEN email_remind_id = '234746e8-4cab-444c-86ee-ea73c57cb7de' THEN 1 
        WHEN email_remind_id = '48d4a578-141e-421c-9eed-0c26de4b8f48' THEN 1  
        WHEN email_remind_id = '674969cd-ae86-4a5c-b813-57cc6183f8e5' THEN 1
        WHEN email_remind_id = '991664d6-4fe3-47c7-add7-e861f617992d' THEN 1
        END

 

工具的日志为:


 看到修改了5行数据,但是只有4个WHEN

修改后的数据是



 这个没有WHEN的条件的数据send_status被改成了null

 

我们现在加上ELSE

SELECT b.email_remind_id,b.send_status FROM b_email_msg_remind  b;

 

 然后执行

UPDATE b_email_msg_remind 
SET 
    send_status =CASE 
        WHEN email_remind_id = '234746e8-4cab-444c-86ee-ea73c57cb7de' THEN 1 
        WHEN email_remind_id = '48d4a578-141e-421c-9eed-0c26de4b8f48' THEN 1  
        WHEN email_remind_id = '674969cd-ae86-4a5c-b813-57cc6183f8e5' THEN 1
        WHEN email_remind_id = '991664d6-4fe3-47c7-add7-e861f617992d' THEN 1 ELSE send_status END

工具的日志为:


可以看到这次只有4条数据被修改
修改后的数据是



 

红框的数据没有被修改

 

 

  • 大小: 3.9 KB
  • 大小: 6 KB
  • 大小: 4 KB
  • 大小: 6.1 KB
  • 大小: 4.1 KB
分享到:
评论

相关推荐

    mysql 同时更新多行数据不同的值

    mysql 同时更新多行数据不同的值 一个复杂的多条件更新sql: update users set status = (case user_id when 1 then 0 when 3 then 1 when 4 then 0 else status end) where user_id in (1,3,4) 在多数情况下,执行...

    MySQL 的CASE WHEN 语句使用说明

    MySQL中的CASE WHEN语句是一种非常强大的条件控制工具,它允许你在SQL查询中根据不同的条件返回不同的结果。CASE语句在数据库处理中起到了类似编程语言中条件判断的作用,使得你可以更灵活地处理数据。 简单CASE...

    mysql 语法工作积累

    通过上述介绍,我们可以看到 MySQL 中的函数如 `IF()` 和 `CASE WHEN THEN` 为数据处理提供了极大的灵活性。正确运用这些函数和技术可以帮助我们更高效地完成日常工作,尤其是在需要根据特定条件进行数据转换或过滤...

    MySQL.pptx

    根据提供的文件信息,我们可以深入探讨以下几个关键的MySQL知识点: ### 1. 外键约束 (Foreign Key Constraint) #### 概念介绍 外键约束是一种确保数据一致性和完整性的机制,它确保一个表中的数据(子表)与另一...

    MYSQL关键字

    MySQL作为一款广泛使用的开源关系型数据库管理系统,拥有丰富的关键字集合用于构建复杂的SQL查询及数据库操作。本文将对MySQL中的关键字进行详细解析,帮助开发者更好地理解和应用这些关键字。 #### 分类介绍 MySQL...

    sql语句技巧小demo

    ### SQL语句技巧小demo ...以上就是关于 SQL 语句的一些小技巧,包括连接操作的不同类型及其使用场景、如何利用连接修改数据,以及 CASE 语句的应用。这些技巧能够帮助提高 SQL 查询效率和数据处理能力。

    SQL基础面试题,一条语句解决问题

    WHEN buynum IS NULL THEN '没有购物' WHEN buynum < 50 THEN '50 以下' ELSE '超过 50' END) AS type, COUNT(*) AS cnt FROM Userinfo GROUP BY type; ``` 这里我们首先根据`buynum`的值创建了三个类别,然后...

    Oracle游标使用方法及语法大全.doc

    使用`FOR UPDATE`子句的游标会锁定查询结果集中的数据行,防止其他事务同时修改相同的数据行,从而实现数据的一致性和完整性。 #### 七、总结 游标是Oracle数据库中处理多行数据的关键机制,无论是简单查询还是...

    GreenPlum大规模数据处理解决方案

    WHEN ORIG.transid IS NOT NULL AND STG.transid IS NOT NULL THEN 'UPDATE' WHEN ORIG.transid IS NOT NULL AND STG.transid IS NULL THEN 'DELETE' ELSE 'UNKNOWN' END AS ProcessAction FROM original_table...

    整理的一些MySQL面试题

    SELECT s.name, MAX(CASE WHEN k.name = '语文' THEN sc.score ELSE NULL END) AS '语文', MAX(CASE WHEN k.name = '数学' THEN sc.score ELSE NULL END) AS '数学' FROM Student s JOIN Sc sc ON s.id = sc.sid ...

    FIREBIRD使用经验总结

    - FIREBIRD: `SELECT CASE WHEN condition THEN value ELSE default END AS field;` 5. **日期时间操作**:FIREBIRD中日期时间操作的方式与MSSQL略有区别: - MSSQL: `SELECT * FROM snartleave WHERE dt_...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob...

    oracle基础知识

    在触发器中使用`NEW`和`OLD`来引用新旧行的数据: ```sql IF :OLD.column_name != :NEW.column_name THEN -- 执行特定逻辑 END IF; ``` ##### 6.5 系统触发器(DDL) DDL触发器可以在数据定义语言(Data Definition...

    SQL 语法参考手册

    SELECT CASE WHEN column > 0 THEN 'Positive' ELSE 'Non-positive' END FROM table; ``` 6. 视图:创建虚拟表,简化复杂的查询。 ```sql CREATE VIEW view_name AS SELECT column1, column2 FROM table WHERE ...

    最详细最全面的SQL入门笔记 包括各知识点的示例代码

    - **CASE表达式**:用于根据条件返回不同的值,如`select case when salary > 5000 then '高薪' else '低薪' end as salary_level from employee;` 6. **数据操纵语言和数据定义语言** - **复制和修改数据**:`...

    FIREBIRD 学习资料

    SELECT CASE WHEN condition THEN 'value' ELSE 'default' END AS result_column FROM table; ``` 6. **日期和时间函数**:MS SQL Server中的`GETDATE()`在FIREBIRD中可以使用`CURRENT_DATE`和`CURRENT_TIME`来...

    SQL21自学通

    - 数据操纵:使用INSERT、UPDATE、DELETE语句进行数据的增删改。 - 数据定义:利用CREATE、ALTER、DROP语句创建、修改或删除数据库对象如表、视图等。 - 数据控制:通过GRANT和REVOKE语句管理用户权限。 #### 流行...

    Head First SQL阅读笔记

    - **条件筛选**: 可以使用 `=`、`<>`、`>`、`、`>=`、`、`IS NULL`、`BETWEEN`、`LIKE` (`%` 和 `_` 作为通配符)、`AND`、`OR`、`NOT IN` 等来筛选数据。 #### 数据更改操作 - **删除记录**: `DELETE FROM table_...

    数据库面试训练数据库面试训练数据库面试训练数据库面试训练数据库面试训练

    注意:ASCII 值范围在 0 至 255 之间,超出此范围使用 `CHR()` 函数会返回 NULL 值。 - **CONCAT()**: 连接字符串。 - **LOWER()**: 将字符串全部转换为小写。 - **UPPER()**: 将字符串全部转换为大写。 - **LTRIM()...

Global site tag (gtag.js) - Google Analytics