【DB_MySQL】MySQL多表关联更新

📅 2026/7/15 19:09:57 👁️ 阅读次数 📝 编程学习
【DB_MySQL】MySQL多表关联更新

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 个关键点(必看)

  1. 必须写 JOIN + ON 关联条件,否则会全表乱更新

  2. SET 必须指定表名表1.字段 = 表2.字段

  3. 一定要加 WHERE,否则更新全表