Postgresql
當我們加入並返回數據時,如何從表中刪除行?
我有兩個疑問:
第一個如下:
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
;-)