我有一个表,其中两个实体之间的关系是双向存储的。因此,如果 A 链接到 B,我有两条记录 - 一条代表 A > B
,另一条代表 B > A
.
test=# select * from myt;
id | from_id | to_id
----+---------+-------
1 | 1 | 2
2 | 2 | 1
3 | 1 | 3
4 | 3 | 1
(4 rows)
是否可以使用 SQL
删除记录,以便我只有记录来表示每个关系?
删除哪个并不重要。
最佳答案
您可以使用 using
子句来执行一种自连接:
DELETE FROM myt a
USING myt b
WHERE a.from_id = b.to_id AND a.to_id = b.from_id -- The "join"
AND a.from_id < b.from_id -- Make sure you don't delete both copies
关于sql - PostgreSQL 删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21529499/