相反列中的重复数据

时间:2013-07-29 07:49:02

标签: sql oracle netezza

我有一个表有两个字段,比如col1和col2

DATA AS
col1,col2
10,age
20,30
30,param
age,10
30,20
param,30

每行重复但反向列顺序

say 
10,age
age,20

在我的最终输出中,我只想在复制的一行中出现单行,所以最后 输出就像

col1,col2
10,age
20,30
30,param

根据给定的场景

,将只剩下三行休息行

我尝试了很多不同的方法但找不到解决方案。 因此,如果你们中的任何人可以提供帮助或只是提供方法,那么这将是一个很好的帮助

由于

3 个答案:

答案 0 :(得分:3)

select distinct col1,col2 from t t1
where col1<=col2
or not exists (select 1 from t where t.col1=t1.col2
                                      and 
                                      t.col2=t1.col1)

SqlFiddle demo

答案 1 :(得分:1)

您可以使用 Greatest and Least

执行相同操作
select distinct 
least("col1","col2") AS "col1"
,greatest("col1","col2") as "col2"
from Table1
order by "col1"

<强> SQL Fiddle 1

根据更新的问题 SQL Fiddle 2

答案 2 :(得分:0)

这不应该足够吗?

SELECT * 
FROM Data 
WHERE Col1 < Col2

(如果您确定每一行都有重复的对)