UPDATE 用来修改表中已有行的字段值,最关键的是一定写好 WHERE,否则会更新全表。
基本语法
sql
UPDATE 表名
SET 列1 = 值1,
列2 = 值2
WHERE 条件;
常见用法
1) 按条件更新某些行
sql
UPDATE users
SET status = 'active'
WHERE id = 1001;
2) 同时更新多个列
sql
UPDATE orders
SET pay_status = 'paid',
paid_at = NOW()
WHERE order_no = 'A20260225';
3) 用原值计算更新(自增/拼接等)
sql
UPDATE products
SET stock = stock - 1
WHERE id = 10 AND stock > 0;
4) 用子查询更新
sql
UPDATE employees
SET dept_id = (SELECT id FROM dept WHERE name = '研发')
WHERE dept_id IS NULL;
5) 关联更新(不同数据库写法略不同)
MySQL
sql
UPDATE a
JOIN b ON b.id = a.b_id
SET a.col = b.col
WHERE a.flag = 1;
PostgreSQL
sql
UPDATE a
SET col = b.col
FROM b
WHERE b.id = a.b_id AND a.flag = 1;
安全小建议
- 先用同样的
WHERE跑一遍:
sql
SELECT * FROM 表名 WHERE 条件;
- 或先
BEGIN;更新后检查再COMMIT;(支持事务的库)。