如果我有一个包含重要 2 列的表格,
CREATE TABLE foo (id INT, a INT, b INT, KEY a, KEY b);
我怎样才能找到在两行中都有a
并且b
相同的所有行?例如,在这个数据集中
id | a | b
----------
1 | 1 | 2
2 | 5 | 42
3 | 1 | 42
4 | 1 | 2
5 | 1 | 2
6 | 1 | 42
我想取回所有行,除了id=2
因为它在(a,b)
. 基本上,我想找到所有会停止的违规行
ALTER TABLE foo ADD UNIQUE (a, b);
比 n^2 for 循环更好的东西会很好,因为我的表有 10M 行。
对于奖励积分:我如何删除除一行之外的所有行(我不在乎哪一行,只要剩下一个)