我想组合一个返回行的SELECT和一个删除我选择的行子集的DELETE?
这可能吗?
答案 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