我从查询中计算了一个表,它看起来像这样:
UID1 UID2
2 3
2 15
3 2
7 12
12 7
15 2
我只需要这里唯一的元组。即在 UID1=2,UID2=3 和 UID1=3,UID2=2 的元组中,我只需要输出中的 1 个元组。
尝试在此表上使用连接,并在另一个表中交换 UID 值,但同样的结果再次出现在输出中。
请问有什么建议吗?
请参阅应该可以解决您的问题的这个 SQL Fiddle 。
它是 uid1 = uid2 两种组合的自联接,并且仅根据 uid1“较小”的任何一个保留 1 个结果。
select
t.*
from
test t
inner join test t2
on t.uid1 = t2.uid2
and t.uid2 = t2.uid1
where
t.uid1 < t2.uid1;