这是示例表,我想获取唯一的组合。在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
答案 0 :(得分:1)
您似乎想选择不同的对。您首先需要稍微变换一下对,以便将x, y
和y, 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;
如果表中只有重复项或某些组合只有一次,则此方法将起作用。