不同的值对SQL

时间:2009-08-25 20:14:12

标签: sql group-by distinct

考虑

 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 

但是给了我“不是表达群体”

5 个答案:

答案 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

之前的解决方案会列出所有对,然后你必须再做第二次查询来计算它们。