【发布时间】:2015-12-02 22:23:00
【问题描述】:
我想根据另一个表 (source) 中的值更新一个表 (target)。但我正在寻找一种适用于 4 个主要数据库的语法 - Oracle、MS SQL Server、PostgreSQL、MySQL。
到目前为止,我还没有找到这样一个统一的语法。我错过了这样的语法还是真的没有这样的语法?
甲骨文
UPDATE target t
SET (t.col1, t.col2) = (SELECT s.col1, s.col2
FROM source s
WHERE s.key = t.key)
MS SQL Server / PostgreSQL
UPDATE target t
SET t.col1 = s.col1, t.col2 = s.col2
FROM source s
WHERE t.key=s.key
MySQL
UPDATE target, source
SET t.col1=s.col1, t.col2=s.col2
WHERE s.key=t.key
【问题讨论】:
标签: mysql sql sql-server oracle ansi