从对中检索单个

use*_*323 2 sql duplicate-data

这是一个SQL查询问题.

如果您有这样的表格:

ID1         ID2
1709    1689
1689    1709
1934    1501
1501    1934
Run Code Online (Sandbox Code Playgroud)

你想要像这样检索:

ID1         ID2
1709    1689
1934    1501
Run Code Online (Sandbox Code Playgroud)

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

Lar*_*tig 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
Run Code Online (Sandbox Code Playgroud)

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