我有一个像这样的MySQL表:
| id1 | id2 |
| 34567 | 75879 | < ---- pair1
| 13245 | 46753 |
| 75879 | 34567 | < ---- pair2
| 06898 | 00013 |
有37 000个条目。
什么是SQL请求或如何识别重复对(如pair1和pair2)?
由于
答案 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;
可能会或可能不会像其他建议的答案一样好。