比较Oracle 11g中2个不同行的2个不同列

时间:2013-10-11 02:21:52

标签: sql database oracle oracle11g

我从查询中计算了一个表,它看起来像这样:

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

我只需要这里独特的元组。即,在UID1 = 2,UID2 = 3且UID1 = 3,UID2 = 2的元组中,输出中只需要1个元组。
尝试使用此表上的连接,在另一个表中交换UID值,但输出中再次出现相同的结果 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

请参阅应解决问题的this 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;