SQL - 返回已删除的行

时间:2013-05-21 12:11:49

标签: sql select sql-delete

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

这可能吗?

2 个答案:

答案 0 :(得分:8)

如果您有一个返回所有候选项的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

答案 1 :(得分:0)

我正在使用 pgAdmin 3,但由于某种原因,接受的答案中的语法对我不起作用(不知道为什么,错误是:错误:“已删除”处或附近的语法错误)

对我有用的是:

DELETE 
 FROM tbl1
 where column1 = value
 RETURNING *;

有关详细信息,请参阅 docs