独特的值对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将列出所有的对,然后你必须做第二个查询来计算它们。