2

我有一个有两个字段的表让我们说 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

根据给定的场景,将只剩下三行其余行将被忽略

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

谢谢

4

3 回答 3

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 演示

于 2013-07-29T08:13:14.620 回答
1

您可以使用最大和最小来做同样的事情

select distinct 
least("col1","col2") AS "col1"
,greatest("col1","col2") as "col2"
from Table1
order by "col1"

SQL 小提琴 1

根据更新的问题SQL Fiddle 2

于 2013-07-29T08:20:21.720 回答
0

这还不够吗?

SELECT * 
FROM Data 
WHERE Col1 < Col2

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

于 2013-07-29T08:10:39.953 回答