我已经能够提出一个查询来选择我想要删除的那些记录,但现在我无法将其转换为删除查询。问题是复合键描述了选定的行,因此正常的从表中删除键(选择键...)
将不起作用(至少对于 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
来识别(在某些情况下可能是我没有提到的第三个标识符)。
最佳答案
啊...我想我已经回答了(应该多考虑一下)。
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
)
关于sql - 通过组合键从 select 中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33470592/