这是一个SQL查询问题。
如果您有这样的表:
ID1 ID2
1709 1689
1689 1709
1934 1501
1501 1934
你想要像这样检索:
ID1 ID2
1709 1689
1934 1501
你会怎么做?请注意,(1709,1689)和(1689,1709)是相似的对,只是移位的ID。我的目的是从这些类似的元组中获得单个元组。
答案 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删除重复项。