Выберите уникальные комбинации столбцов - PullRequest
0 голосов
/ 02 февраля 2019

Скажем, у меня есть таблица TEST с двумя столбцами F1 и F2, которые оба являются целыми числами.Скажем, ТЕСТ выглядит так:

F1|F2
-----
 1|2
 2|1
 1|3
 4|1

По сути, я хочу вернуть результаты, которые выглядят следующим образом:

F1|F2
-----
 1|2
 1|3
 4|1

У меня возникли проблемы с предложением выбора, которое будет игнорироватьсястрока (b, a), если (a, b) уже существует и по-прежнему выбирает все строки, для которых ее обратное не существует.

1 Ответ

0 голосов
/ 02 февраля 2019

Вы можете использовать проверку EXISTS, чтобы увидеть, есть ли в таблице запись, которая имеет те же значения, но в другом порядке.Мы также добавляем условие, что значение F2 больше значения F1, чтобы мы не исключали (1,2) и (2,1), и мы используем DISTINCT, поэтому мы не получаем несколько записей, гдеF1 = F2 (например, (2,2)).

SELECT DISTINCT F1, F2
FROM test t1
WHERE NOT EXISTS (SELECT F1, F2 
                  FROM test t2
                  WHERE t2.F1 = t1.F2 AND t2.F2 = t1.F1 AND t2.F2 > t2.F1)
ORDER BY F1, F2

Вывод:

F1  F2
1   2
1   3
4   1

Демонстрация по SQLFIddle

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