如何获得独特的组合

时间:2019-07-04 07:31:24

标签: sql

这是示例表,我想获取唯一的组合。在SQL查询方面需要帮助。

a   z
b   x
c   w
d   s
e   t
z   a
x   b
w   c
s   d
t   e

必填输出:

a   z
b   x
c   w
d   s
e   t

3 个答案:

答案 0 :(得分:1)

您似乎想选择不同的对。您首先需要稍微变换一下对,以便将x, yy, x视为相同,然后使用DISTINCT子句:

CREATE TABLE #t (col1 CHAR(1), col2 CHAR(1));
INSERT INTO #t VALUES
('a', 'z'),
('b', 'x'),
('c', 'w'),
('d', 's'),
('e', 't'),
('z', 'a'),
('x', 'b'),
('w', 'c'),
('s', 'd'),
('t', 'e');

SELECT DISTINCT
    CASE WHEN col1 < col2 THEN col1 ELSE col2 END,
    CASE WHEN col1 < col2 THEN col2 ELSE col1 END
FROM #t

答案 1 :(得分:0)

您似乎有完整的副本,因此只需使用<

select a, b
from t
where a < b;

如果您没有完整的重复项,并且想要保留原始值,则建议使用union all

select a, b
from t
where a < b
union all
select a, b
from t
where a > b and
      not exists (select 1 from t t2 where t2.a = t.b and t2.b = t.a);

答案 2 :(得分:0)

或结合使用以下尝试:

select col1, col2 from t where col1 < col2 
union
select col2, col1 from t where col1 >= col2;

如果表中只有重复项或某些组合只有一次,则此方法将起作用。