Предполагая, что RDBMS
поддерживает LEAST
и GREATEST
(Oracle поддерживает):
SELECT DISTINCT LEAST(id1, id2), GREATEST(id1, id2)
FROM mytable
Кроссплатформенная версия:
SELECT DISTINCT
CASE WHEN id1 < id2 THEN id1 ELSE id2 END,
CASE WHEN id1 > id2 THEN id1 ELSE id2 END
FROM mytable