独特的值对SQL

考虑

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 

但是却给了我“不是一个集体的expression”

你的意思是要么

 SELECT DISTINCT a, b FROM pairs; 

要么

 SELECT a, b FROM pairs GROUP BY a, b; 

如果你想要把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答案的启发

这会给你你的结果作为一个例子:

 SELECT DISTINCT a, b FROM pairs 

如果你想过滤元组,你可以用这种方式:

 select distinct (case a > b then (a,b) else (b,a) end) from pairs 

好东西就是你不用团结。

如果你只是想要一个不同的对数。

最简单的方法如下SELECT COUNT(DISTINCT a,b) FROM pairs

以前的解决scheme将列出所有的对,然后你必须做第二个查询来计算它们。