【发布时间】:2017-06-12 10:56:50
【问题描述】:
我是一个 postgres 用户,是 MS SQL 的新手。我需要复制 ON DUPLICATE KEY UPDATE 功能(有时称为 UPSERT)。我有一张包含年龄和性别的用户表(此处已简化)。
使用此示例查询,但根据需要更改 id,UPDATE 功能有效,但 INSERT 无效。没有错误,它只是说 0 行受到影响。
MERGE
users AS target
USING
(SELECT id FROM users WHERE id=222) AS source
ON
target.id = source.id
WHEN MATCHED THEN
UPDATE SET
target.id = source.id,
target.age = 33,
target.sex = 'M'
WHEN NOT MATCHED THEN
INSERT (id, age, sex) VALUES (222, 33, 'M')
;
如果它很重要(也许有一些更简单的方法),我在 linux 中使用 python3。
附:我在 StackOverflow 中查看了其他 UPSERT in MSSQL 问题。这就是我得到这个语法的方式。不过,我无法通过他们理解这里的问题。
【问题讨论】:
-
如果 id 只匹配
update而不是insert。
标签: sql sql-server upsert on-duplicate-key