我有一个包含数据的表
col1 col2
a b
b a
c d
d c
a d
a c
对我来说,第1行和第2行是重复的,因为a, b
& b, a
是一样的。第3行和第4行也是如此。
我需要一个SQL(不是PL / SQL)查询,它将输出作为
col1 col2
a b
c d
a d
a c
答案 0 :(得分:7)
select distinct least(col1, col2), greatest(col1, col2)
from your_table
编辑:对于那些使用支持标准SQL函数least
和greatest
的DBMS的人,可以使用CASE表达式进行模拟:
select distinct
case
when col1 < col2 then col1
else col2
end as least_col,
case
when col1 > col2 then col1
else col2
end as greatest_col
from your_table
答案 1 :(得分:0)
试试这个:
CREATE TABLE t_1(col1 varchar(10),col2 varchar(10))
INSERT INTO t_1
VALUES ('a','b'),
('b','a'),
('c','d'),
('d','c'),
('a','d'),
('a','c')
;with CTE as (select ROW_NUMBER() over (order by (select 0)) as id,col1,col2,col1+col2 as col3 from t_1)
,CTE1 as (
select id,col1,col2,col3 from CTE where id=1
union all
select c.id,c.col1,c.col2,CASE when c.col3=REVERSE(c1.col3) then null else c.col3 end from CTE c inner join CTE1 c1
on c.id-1=c1.id
)
select col1,col2 from CTE1 where col3 is not null