如何在MySQL中查找重复对

时间:2011-12-21 18:22:28

标签: mysql duplicates

我有一个像这样的MySQL表:

  

| id1 | id2 |

     

| 34567 | 75879 | < ---- pair1

     

| 13245 | 46753 |

     

| 75879 | 34567 | < ---- pair2

     

| 06898 | 00013 |

有37 000个条目。

什么是SQL请求或如何识别重复对(如pair1和pair2)?

由于

3 个答案:

答案 0 :(得分:3)

如果您想识别重复项并同时计算它们,可以使用:

SELECT if(id1 < id2, id1, id2), if (id1 < id2, id2, id1), count(*)
  FROM your_table
 GROUP BY 1,2
HAVING count(*) > 1

这不会执行连接,最终可能会更快。

答案 1 :(得分:2)

如果你自己加入桌子,你可以过滤掉你需要的桌子。

SELECT * 
  FROM your_table yt1,
       your_table yt2 
 WHERE (yt1.id1 = yt2.id2 AND yt1.id2 = yt1.id1)
    OR (yt1.id1 = yt2.id1 AND yt1.id2 = yt2.id2)

答案 2 :(得分:0)

原帖是1000年,但这是另一种形式:

SELECT CONCAT(d1, '/' d2) AS pair, count(*) AS total
FROM your_table
GROUP BY pair HAVING total > 1
ORDER BY total DESC;

可能会或可能不会像其他建议的答案一样好。