7

我想组合一个返回行的 SELECT 和一个删除我选择的行的子集的 DELETE?

这可能吗?

4

2 回答 2

12

如果您有一个返回所有候选的 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
于 2013-05-21T12:35:14.737 回答
1

我正在使用 pgAdmin 3,由于某种原因,接受答案中的语法对我不起作用(不知道为什么,错误是:ERROR: syntax error at or near "DELETED"

对我有用的是:

DELETE 
 FROM tbl1
 where column1 = value
 RETURNING *;

有关更多信息,请参阅文档

于 2021-05-04T09:14:12.150 回答