70

考虑

 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 

但给了我“不是按表达式分组”

4

5 回答 5

93

你的意思是要么

SELECT DISTINCT a, b FROM pairs;

或者

SELECT a, b FROM pairs GROUP BY a, b;
于 2009-08-25T20:16:24.280 回答
20

如果您想将 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 回答的启发

于 2014-02-14T16:42:41.417 回答
11

这将为您提供作为示例的结果:

SELECT DISTINCT a, b
FROM pairs
于 2009-08-25T20:16:58.320 回答
5

如果要过滤可以通过这种方式使用的元组:

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

好东西是你不必使用 group by。

于 2012-01-28T21:11:49.747 回答
-1

如果您只想计算不同的对。

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

以前的解决方案会列出所有对,然后您必须进行第二次查询才能计算它们。

于 2013-07-14T13:27:12.263 回答