我从一个查询中计算出一个表,它如下所示:

UID1 UID2
2    3
2    15
3    2
7    12
12   7
15   2

我只需要这里唯一的元组。也就是说,在uid1=2、uid2=3和uid1=3、uid2=2的元组中,输出中只需要一个元组。
尝试在另一个表中交换了uid值的情况下在此表上使用join,但在输出中再次出现相同的结果。
有什么建议吗?

最佳答案

看这应该能解决你的问题。
它是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;

09-28 04:25