WHERE 必带与 LIMIT要点
- 省略 WHERE 会更新全表,属于高危误操作
- 上线前把 UPDATE 先改写成 SELECT 跑一遍看命中行数
- MySQL 8 支持 UPDATE 表 SET 列=值 ORDER BY 列 LIMIT n
- LIMIT 让更新只作用前 n 行,适合分批修数据
- 受影响行数为 0 多半是 WHERE 没匹配上,不是语法错
- 生产环境建议给 UPDATE 加事务,确认无误再提交
WHERE 必带与 LIMIT示例
-- 先当 SELECT 验证命中范围
SELECT * FROM user WHERE status = 'frozen' AND level = 'vip';
-- 确认无误再改成 UPDATE,并先用 LIMIT 试跑
UPDATE user SET status = 'active'
WHERE status = 'frozen' AND level = 'vip' LIMIT 100;
避坑提醒:固定动作:先 SELECT 看行数 → 加 LIMIT 试跑一批 → 确认无误再全量。宁可慢三步,别错一次。