如何在sql数据库中使用内连接解决删除问题?

问题描述 投票:0回答:1

尝试删除记录时出现以下错误:

错误:“SPO”处或附近的语法错误 第1行:删除SPO,SP ^

这是我的代码:

DELETE SPO,SP 
FROM stock_pack_operation SPO  
INNER JOIN stock_picking SP ON sp.id = spo.picking_id  
WHERE sp.company_id = 1;
sql postgresql inner-join sql-delete
1个回答
1
投票

你不能加入Postgres的FROMDELETE

如果你想用stock_picking spcompany_id1中的所有相应行删除stock_pack_operation中的所有行,你可以使用带有RETURNING子句的cte。

WITH cte
(
DELETE FROM stock_picking sp
       WHERE sp.company_id = 1
       RETURNING sp.id
)
DELETE FROM stock_pack_operation spo
       USING cte
       WHERE spo.picking_id = cte.id;

如果想删除stock_pack_operationpicking_ididstock_picking1公司的所有行,你可以使用USING

DELETE FROM stock_pack_operation spo
       USING stock_picking sp
       WHERE spo.picking_id = sp.id
             AND sp.company_id = 1;
© www.soinside.com 2019 - 2024. All rights reserved.