如何解决使用PostgreSQL连接从多个表中删除记录
我正在使用Postgresql 11
数据库,我通过外键T1,T2和T3拥有三个相关的表。
T1和T2之间存在多对多关系,因此我将T3用作联接表。
我正在尝试使用JOIN
通过一个查询从这三个表中删除记录,我尝试过:
DELETE t1,t3,t2 FROM T1 AS t1
INNER JOIN T3 AS t3 ON t1.id = t3.t1_id
INNER JOIN T2 AS t2 ON t2.id = t3.t2_id
WHERE t1.col = 'something';
我使用pgAdmin
运行了此查询,它返回:
ERROR: ERROR: Syntax error near « t1 »
LINE 1: DELETE t1,t2 FROM T1 ...
解决方法
相反,一次删除一个表:
with t1 as (
delete t1
where t1.col = 'something'
returning *
),t3 as (
delete t3
where t3.t1_id in (select id from t1)
returning *
)
delete t2
where t2.id in (select t2_id from t3);
这完全不一样。内部联接要求表之间匹配。但是我认为这是您的意图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。