首页/数据/数据库速查/多表 UPDATE / DELETE JOIN 语法
本包目录(495 条)
MySQL 基础与连接36 条
SQL 语法52 条
用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

多表 UPDATE / DELETE JOIN 语法

跨表条件更新与删除用 JOIN 子句表达;同一条 UPDATE 只会更新每行一次,语义与直觉不同要留意。

数据库速查数据更新于 2026-10-12
用途跨表改删
语法UPDATE t1 JOIN t2 ON … SET t1.col = … WHERE …
DELETEDELETE t1 FROM t1 JOIN t2 ON …

多表更新

多表更新
UPDATE order_items oi
JOIN orders o ON o.id = oi.order_id
SET oi.status = 'closed'
WHERE o.status = 'closed' AND oi.status = 'open';

多表删除

多表删除
DELETE u FROM users u
JOIN blacklist b ON b.user_id = u.id
WHERE b.expire_at < NOW();
多表 UPDATE 的行更新顺序不确定(官方文档明确说明),并发场景要靠唯一约束而非更新顺序保证一致性。

易错点

  • 多表删除必须写 DELETE 别名 FROM …,写错会删除意外对象
  • 跨表更新同样要关注被驱动表的索引,否则逐行全表扫

数据来源与参考

  • MySQL 8.0 Reference Manual: UPDATE Statement - Multiple Table Syntax

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌