考虑
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
但给了我“不是按表达式分组”
你的意思是要么
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
好东西是你不必使用 group by。
如果您只想计算不同的对。
最简单的方法如下
SELECT COUNT(DISTINCT a,b) FROM pairs
以前的解决方案会列出所有对,然后您必须进行第二次查询才能计算它们。