先查看一下数据
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条数据被修改
修改后的数据是
红框的数据没有被修改
相关推荐
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语句是一种非常强大的条件控制工具,它允许你在SQL查询中根据不同的条件返回不同的结果。CASE语句在数据库处理中起到了类似编程语言中条件判断的作用,使得你可以更灵活地处理数据。 简单CASE...
通过上述介绍,我们可以看到 MySQL 中的函数如 `IF()` 和 `CASE WHEN THEN` 为数据处理提供了极大的灵活性。正确运用这些函数和技术可以帮助我们更高效地完成日常工作,尤其是在需要根据特定条件进行数据转换或过滤...
根据提供的文件信息,我们可以深入探讨以下几个关键的MySQL知识点: ### 1. 外键约束 (Foreign Key Constraint) #### 概念介绍 外键约束是一种确保数据一致性和完整性的机制,它确保一个表中的数据(子表)与另一...
MySQL作为一款广泛使用的开源关系型数据库管理系统,拥有丰富的关键字集合用于构建复杂的SQL查询及数据库操作。本文将对MySQL中的关键字进行详细解析,帮助开发者更好地理解和应用这些关键字。 #### 分类介绍 MySQL...
### SQL语句技巧小demo ...以上就是关于 SQL 语句的一些小技巧,包括连接操作的不同类型及其使用场景、如何利用连接修改数据,以及 CASE 语句的应用。这些技巧能够帮助提高 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`的值创建了三个类别,然后...
使用`FOR UPDATE`子句的游标会锁定查询结果集中的数据行,防止其他事务同时修改相同的数据行,从而实现数据的一致性和完整性。 #### 七、总结 游标是Oracle数据库中处理多行数据的关键机制,无论是简单查询还是...
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...
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: `SELECT CASE WHEN condition THEN value ELSE default END AS field;` 5. **日期时间操作**:FIREBIRD中日期时间操作的方式与MSSQL略有区别: - MSSQL: `SELECT * FROM snartleave WHERE dt_...
二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob...
在触发器中使用`NEW`和`OLD`来引用新旧行的数据: ```sql IF :OLD.column_name != :NEW.column_name THEN -- 执行特定逻辑 END IF; ``` ##### 6.5 系统触发器(DDL) DDL触发器可以在数据定义语言(Data Definition...
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 ...
- **CASE表达式**:用于根据条件返回不同的值,如`select case when salary > 5000 then '高薪' else '低薪' end as salary_level from employee;` 6. **数据操纵语言和数据定义语言** - **复制和修改数据**:`...
SELECT CASE WHEN condition THEN 'value' ELSE 'default' END AS result_column FROM table; ``` 6. **日期和时间函数**:MS SQL Server中的`GETDATE()`在FIREBIRD中可以使用`CURRENT_DATE`和`CURRENT_TIME`来...
- 数据操纵:使用INSERT、UPDATE、DELETE语句进行数据的增删改。 - 数据定义:利用CREATE、ALTER、DROP语句创建、修改或删除数据库对象如表、视图等。 - 数据控制:通过GRANT和REVOKE语句管理用户权限。 #### 流行...
WHEN job_level = '3' THEN e_wage * 1.06 ELSE e_wage * 1.05 END; ``` ### WHILE CONTINUE BREAK - **用途**:循环处理。 - **语法示例**(SQL Server): ```sql DECLARE @x int, @y int; SET @x = 1; ...
- **条件筛选**: 可以使用 `=`、`<>`、`>`、`、`>=`、`、`IS NULL`、`BETWEEN`、`LIKE` (`%` 和 `_` 作为通配符)、`AND`、`OR`、`NOT IN` 等来筛选数据。 #### 数据更改操作 - **删除记录**: `DELETE FROM table_...
注意:ASCII 值范围在 0 至 255 之间,超出此范围使用 `CHR()` 函数会返回 NULL 值。 - **CONCAT()**: 连接字符串。 - **LOWER()**: 将字符串全部转换为小写。 - **UPPER()**: 将字符串全部转换为大写。 - **LTRIM()...