MySQL 多表关联更新(UPDATE JOIN)最实用写法
一、标准语法(最常用)
UPDATE 表1
JOIN 表2 ON 表1.关联字段 = 表2.关联字段
SET 表1.要更新的字段 = 表2.来源字段
WHERE 过滤条件;
二、最常用示例(你直接套)
示例 1:根据用户 ID,把 user 表的昵称更新成 order 表的收货人
UPDATE user u
JOIN orders o ON u.id = o.user_id
SET u.nickname = o.receiver_name
WHERE o.order_status = 1;
示例 2:多字段同时更新
UPDATE user u
JOIN orders o ON u.id = o.user_id
SET u.phone = o.receiver_phone,u.address = o.receiver_address
WHERE o.create_time > '2025-01-01';
示例 3:左关联更新(没有匹配也更新为 NULL)
UPDATE user u
LEFT JOIN orders o ON u.id = o.user_id
SET u.total_amount = o.order_amount;
三、带条件 + 只更新符合条件的数据(最安全)
UPDATE product p
JOIN category c ON p.cat_id = c.id
SET p.status = 1
WHERE c.name = '电子产品'
AND p.price > 100;
四、3 个关键点(必看)
-
必须写 JOIN + ON 关联条件,否则会全表乱更新
-
SET 必须指定表名:
表1.字段 = 表2.字段 -
一定要加 WHERE,否则更新全表
