重要な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);
私のテーブルには10M行があるので、n^2 forループよりも優れたものがいいでしょう。
ボーナス ポイント: 1 行を除くすべての行を削除するにはどうすればよいですか (1 行が残っている限り、どの行でもかまいません)。