我想组合一个返回行的 SELECT 和一个删除我选择的行的子集的 DELETE?
这可能吗?
如果您有一个返回所有候选的 SELECT 语句,只需将 SELECT 更改为 DELETE 并使用 OUTPUT DELETED.*。
SELECT *
FROM tbl1
INNER JOIN tbl2 on tlb1.col = tbl2.col
INNER JOIN tlb3 on tbl2.anothercol = tbl3.somecol
WHERE blah blah blah
可以变成:
DELETE tbl1 OUTPUT DELETED.*
FROM tbl1
INNER JOIN tbl2 on tlb1.col = tbl2.col
INNER JOIN tlb3 on tbl2.anothercol = tbl3.somecol
WHERE blah blah blah
我正在使用 pgAdmin 3,由于某种原因,接受答案中的语法对我不起作用(不知道为什么,错误是:ERROR: syntax error at or near "DELETED")
对我有用的是:
DELETE
FROM tbl1
where column1 = value
RETURNING *;
有关更多信息,请参阅文档