PostgreSQL
PostgreSQL
UPDATE orders o
SET status = p.status
FROM payment p
WHERE p.order_id = o.id
AND p.status = 'success';MySQL
MySQL
UPDATE orders o
JOIN payment p ON p.order_id = o.id AND p.status = 'success'
SET o.status = p.status;| PostgreSQL | UPDATE 目标表 + FROM 源表 + WHERE 关联;别把目标表再写进 FROM |
|---|---|
| MySQL | JOIN 语法支持 INNER/LEFT 等;多表更新不能用 ORDER BY/LIMIT |
| 风险 | 源表对同一目标行有多条匹配时,取哪条由执行计划决定 |