不同的值对SQL

Osc*_*Ryz 52 sql group-by distinct

考虑

 create table pairs ( number a, number b ) 
Run Code Online (Sandbox Code Playgroud)

数据在哪里

1,1
1,1
1,1
2,4
2,4
3,2
3,2
5,1
Run Code Online (Sandbox Code Playgroud)

等等.

什么查询给了我b列数b的不同值所以我可以看到

1,1
5,1
2,4
3,2
Run Code Online (Sandbox Code Playgroud)

只要

我试过了

select distinct ( a ) , b from pairs group by b 
Run Code Online (Sandbox Code Playgroud)

但是给了我"不是一个表达的群体"

Mic*_*ker 71

你的意思是

SELECT DISTINCT a, b FROM pairs;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT a, b FROM pairs GROUP BY a, b;
Run Code Online (Sandbox Code Playgroud)

  • 如果你有重复的行,那么按每列分组的JamesMLV与不分组的JamesMLV不同.考虑`SELECT a,b,count(*)FROM pairs`的输出. (6认同)
  • 现在我考虑一下,每列的分组与不分组相同.而你打败了我30秒.+1 (3认同)

Stu*_*rtQ 16

如果您想将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
Run Code Online (Sandbox Code Playgroud)

灵感来自@meszias上面的回答


ang*_*son 10

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

SELECT DISTINCT a, b
FROM pairs
Run Code Online (Sandbox Code Playgroud)


小智 5

如果你想过滤元组,你可以这样使用:

select distinct (case a > b then (a,b) else (b,a) end) from pairs
Run Code Online (Sandbox Code Playgroud)

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