考虑
create table pairs ( number a, number b )
数据在哪里
1,1
1,1
1,1
2,4
2,4
3,2
3,2
5,1
等。
什么查询为我提供了列b的数字的不同值所以我可以看到
1,1
5,1
2,4
3,2
仅
我试过
select distinct ( a ) , b from pairs group by b
但是给了我“不是表达群体”
答案 0 :(得分:66)
你的意思是
SELECT DISTINCT a, b FROM pairs;
或
SELECT a, b FROM pairs GROUP BY a, b;
答案 1 :(得分:15)
如果您想将1,2和2,1视为同一对,那么这将为您提供MS-SQL上的唯一列表:
SELECT DISTINCT
CASE WHEN a > b THEN a ELSE b END as a,
CASE WHEN a > b THEN b ELSE a END as b
FROM pairs
受上述@meszias回答的启发
答案 2 :(得分:9)
这将为您提供您给出的结果:
SELECT DISTINCT a, b
FROM pairs
答案 3 :(得分:4)
如果你想过滤你可以这样使用的元组:
select distinct (case a > b then (a,b) else (b,a) end) from pairs
好东西是你不必使用group by。
答案 4 :(得分:0)
如果您只想要不同对的计数。
最简单的方法如下
SELECT COUNT(DISTINCT a,b) FROM pairs
之前的解决方案会列出所有对,然后你必须再做第二次查询来计算它们。