Извлечение одного из пар

#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 для удаления дубликатов.