从对中检索单个

时间:2011-10-29 01:43:28

标签: sql duplicate-data

这是一个SQL查询问题。

如果您有这样的表:

ID1         ID2
1709    1689
1689    1709
1934    1501
1501    1934

你想要像这样检索:

ID1         ID2
1709    1689
1934    1501

你会怎么做?请注意,(1709,1689)和(1689,1709)是相似的对,只是移位的ID。我的目的是从这些类似的元组中获得单个元组。

1 个答案:

答案 0 :(得分:5)

试试这个,它应该适用于支持CASE的任何方言(你没有指定你正在使用的产品):

 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

这会将所有行转换为首先使用较低的ID,然后使用DISTINCT删除重复项。