Отличительная пара значений 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 

, но дает мне «не группа по выражению»

вопрос задан 25.08.2009
OscarRyz
138650 репутация

5 ответов


  • 64 рейтинг

    То, что вы имеете в виду, это либо

    SELECT DISTINCT a, b FROM pairs;
    

    или

    SELECT a, b FROM pairs GROUP BY a, b;
    
    ответ дан Michael Krelin - hacker, с репутацией 84665, 25.08.2009
  • 11 рейтинг

    Если вы хотите обработать 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 выше

    ответ дан StuartQ, с репутацией 2718, 14.02.2014
  • 9 рейтинг

    Это даст вам результат, который вы даете в качестве примера:

    SELECT DISTINCT a, b
    FROM pairs
    
    ответ дан Lasse Vågsæther Karlsen, с репутацией 279998, 25.08.2009
  • 4 рейтинг

    , если вы хотите отфильтровать кортежи, которые вы можете использовать следующим образом:

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

    хорошо то, что вам не нужно использовать группу по.

    ответ дан meszias, с репутацией 51, 28.01.2012
  • 0 рейтинг

    Если вы просто хотите , подсчитайте различных пар.

    Самый простой способ сделать это заключается в следующем SELECT COUNT(DISTINCT a,b) FROM pairs

    В предыдущих решениях перечислялись все пары, а затем вам нужно было бы выполнить второй запрос для их подсчета.

    ответ дан adam, с репутацией 106, 14.07.2013