消除半复制的最佳方法! Oracle中的记录

时间:2013-09-14 20:28:38

标签: sql oracle

我有一些像

这样的记录
a,b
b,a
a,c
c,a
b,d
d,b
b,f
f,b
...

在我的查询结果中。 (他们是电子邮件) 最好的方法是什么:

a,b
a,c 
b,d
b,f

并消除b,a和c,a,d,b,f,b?

我试过

SELECT *
FROM ...
WHERE MOD(ROWNUM/2)=0

但它只返回第一行

2 个答案:

答案 0 :(得分:7)

怎么样......

select distinct
  least(col1,col2) col1,
  greatest(col1, col2) col2
from
  my_table

答案 1 :(得分:1)

大卫的好答案,

标准SQL的答案:

select a,b from (
  select 
    (case when col1 < col2  
          then col1
          else col2
      end) as a,
    (case when col1 > col2  
          then col1
          else col2
      end) as b
from t )
group by a,b
order by a,b;

Sqlfiddle:

http://sqlfiddle.com/#!4/c63b7/1