我正在使用INSERT ... ON CONFLICT ...能够在 PostgreSQL 表中插入一些数据。
但是现在我还希望能够删除一些现有的行,如果它们不是由当前INSERT查询提供的。所以,除了INSERTand 之外UPDATE,我希望能够做一个DELETE.
使用SQL Server,我会使用MERGE查询和:
WHEN NOT MATCHED BY SOURCE THEN DELETE
Run Code Online (Sandbox Code Playgroud)
使用 实现类似功能的推荐方法是什么PostgreSQL?
我宁愿不要运行两个单独的查询。
您可以为此使用 CTE
WITH updated AS (
INSERT ...
INTO tbl
ON CONFLICT ...
RETURNING your_primary_key
)
DELETE FROM tbl t
WHERE your_primary_key NOT IN (
SELECT updated.your_primary_key FROM updated
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1260 次 |
| 最近记录: |