在 SQL 中,UPDATE 语句用于修改表中已存在的记录。
当需要更新多个满足特定条件的行时,可以结合 IN 关键字来实现简洁高效的批量更新。
基本语法
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE column_name IN (value1, value2, ...);
示例场景
假设有一个用户表 users,结构如下:
id | name | status
---|-------|--------
| Alice | active
| Bob | inactive
| Carol | active
| Dave | pending
现在希望将 ID 为 1、3 和 4 的用户的 status 字段统一更新为 'verified':
UPDATE users
SET status = 'verified'
WHERE id IN (1, 3, 4);
注意事项
IN列表中的值必须与列的数据类型兼容。- 如果列表为空(如
IN ()),大多数数据库会报错或不更新任何行。 - 对于大量 ID 的情况,建议使用子查询替代硬编码列表,例如:
UPDATE users SET status = 'verified' WHERE id IN (SELECT user_id FROM temp_ids);
适用数据库
该语法在以下数据库中通用:
- MySQL
- PostgreSQL
- SQLite
- SQL Server
- Oracle(需注意空值处理)