我已经能够提出一个选择那些我想要删除的记录的查询,但现在我无法将其转换为删除查询。问题是复合键描述了所选行,因此正常delete from table where key in (select key...)
不会起作用(至少不适用于Postgres)。
有什么方法可以让它发挥作用吗?
这是选择查询:
SELECT t1.*, link.*, t2.* FROM tbl as t1
JOIN link on link.a = t1.link_id
JOIN tbl as t2
ON link.b = t2.link_id
WHERE t1.data = t2.data and
t1.some_id = q2.some_id
tbl
可以通过some_id
和link_id
标识(在某些情况下我可能没有提及第三个标识符)。
答案 0 :(得分:2)
啊......我想我回答了(应该考虑一下)。
DELETE FROM tbl as t1
WHERE EXISTS (
SELECT 1 FROM link
JOIN tbl as t2
ON link.b = t2.link_id
WHERE
link.a = t1.link_id
AND t1.data = t2.data
AND t1.some_id = t2.some_id
)