UPDATE tableA AS A
JOIN tableB AS B ON A.id = B.id
SET A.name = B.name,
A.email = B.email
WHERE condition;
UPDATE table1
JOIN (SELECT id, name FROM table2 WHERE condition) AS s
ON table1.id = s.id
SET table1.name = s.name;
SQL Server
UPDATE A
SET A.name = B.name,
A.email = B.email
FROM tableA AS A
JOIN tableB AS B ON A.id = B.id;
UPDATE A
SET A.name = B.name
FROM table1 AS A
JOIN (
SELECT id, name
FROM table2
WHERE condition -- 替换为实际条件,例如 status = 'active'
) AS B ON A.id = B.id;
Oracle 写法
UPDATE tableA
SET (name, email) = (
SELECT name, email
FROM tableB
WHERE tableB.id = tableA.id
)
-- 附加条件:例如只更新特定状态或满足其他条件的记录
WHERE status = 'active' -- 示例新增条件:仅更新 tableA 中 status = 'active' 的记录
AND age > 20; -- 再加一个条件:年龄大于20