SQL表自我比较:如何消除重复

时间:2014-06-17 12:56:29

标签: sql

我正在尝试在具有一个共同参数的同一SQL表的行之间进行自我比较,我正在搜索如何消除重复的行。

以下是问题的表示:

item

   id   |   value
_________________
   0    |    10  
   1    |    10  

以下是我想得到的结果(其中一个很好,它们是等价的):

  id1   |   id2        *      id1   |   id2     
___________________   O R   ___________________  
   0    |    1         *       1    |    0 

以下是我得到的结果:

  id1   |   id2
___________________
   0    |    1
   1    |    0

以下是我的查询:

SELECT item1.id as id1, item2.id as id2
FROM item item1, item item2
WHERE item1.value = item2.value
      AND item1.id <> item2.id

有没有办法告诉它如果一对id“(0,1)”是一个结果,那么它不应该返回反转对“(1,0)”?

感谢您花时间阅读,如果我不清楚,请随时告诉我。

1 个答案:

答案 0 :(得分:3)

您可以随意决定是否始终将对列表为(low,high),并使用<代替<>

SELECT item1.id as id1, item2.id as id2
FROM   item item1, item item2
WHERE  item1.value = item2.value
AND    item1.id < item2.id