Postgresql

當我們加入並返回數據時,如何從表中刪除行?

  • October 14, 2017

我有兩個疑問:

第一個如下:

SELECT * 
FROM batch bp 
 INNER JOIN sender_log sl ON sl.id=bp.log_id 
   AND bp.protocol='someprotocol'

第二個查詢用於刪除行:

delete from batch where protocol='someprotocol'

我知道在 postgres 我們有**RETURNING ***返回已刪除的行。我想要實現的是刪除行並在一個查詢中返回它們。我怎樣才能做到這一點?

確實非常簡單,但是您需要包含其他WHERE子句:

DELETE FROM batch bp
USING  sender_log sl
WHERE  bp.log_id = sl.id
AND    bp.protocol = 'someprotocol'
RETURNING bp.*, sl.*;

並且要實際返回您的問題概述,您需要在RETURNING子句中包含兩個表。

確實很簡單:

DELETE FROM batch bp
USING sender_log sl
WHERE bp.log_id = sl.id
RETURNING sl.packet

;-)

引用自:https://dba.stackexchange.com/questions/63975