Ответ 1
Что вы имеете в виду, это либо
SELECT DISTINCT a, b FROM pairs;
или
SELECT a, b FROM pairs GROUP BY a, b;
Рассмотрим
create table pairs ( number a, number b )
Если данные
1,1
1,1
1,1
2,4
2,4
3,2
3,2
5,1
Etc.
Какой запрос дает мне различные значения, которые столбец числа 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
Хороший материал - вам не нужно использовать группу.
Если вы просто хотите подсчитать отдельных пар.
Самый простой способ сделать это следующим образом
SELECT COUNT(DISTINCT a,b) FROM pairs
Предыдущие решения будут перечислять все пары, а затем вам придется сделать второй запрос, чтобы посчитать их.