#sql #duplicate-data
#sql #дубликат-данные
Вопрос:
Это вопрос SQL-запроса.
Если у вас есть такая таблица:
ID1 ID2
1709 1689
1689 1709
1934 1501
1501 1934
И вы хотите получить вот так:
ID1 ID2
1709 1689
1934 1501
Как бы вы это сделали? Пожалуйста, обратите внимание, что (1709, 1689) и (1689, 1709) являются похожими парами, только идентификаторы сдвигаются. Моя цель — получить один кортеж из этих похожих кортежей.
Ответ №1:
Попробуйте это, которое должно работать на любом диалекте (вы не указываете, какой продукт вы используете), который поддерживает регистр:
SELECT DISTINCT
CASE WHEN ID1 < ID2 THEN ID1 ELSE ID2 END AS ID1,
CASE WHEN ID1 < ID2 THEN ID2 ELSE ID1 END AS ID2
FROM Table
Это сначала преобразует все строки с более низким идентификатором, а затем использует DISTINCT для удаления дубликатов.