Pau*_*jan 5 mysql sql aggregate
如果我有一个包含重要 2 列的表格,
CREATE TABLE foo (id INT, a INT, b INT, KEY a, KEY b);
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到所有的行,a并且b在两行中都相同?例如,在这个数据集中
id | a | b
----------
1 | 1 | 2
2 | 5 | 42
3 | 1 | 42
4 | 1 | 2
5 | 1 | 2
6 | 1 | 42
Run Code Online (Sandbox Code Playgroud)
我想取回所有行,id=2因为它在(a,b). 基本上,我想找到所有会阻止
ALTER TABLE foo ADD UNIQUE (a, b);
Run Code Online (Sandbox Code Playgroud)
比 n^2 for 循环更好的东西会很好,因为我的表有 10M 行。
对于奖励积分:如何删除除一行之外的所有行(我不在乎哪些行,只要还剩下一行)
SELECT *
FROM foo first
JOIN foo second
ON ( first.a = second.a
AND first.b = second.b )
AND (first.id <> second.id )
Run Code Online (Sandbox Code Playgroud)
应该列出所有行,其中不止一行具有相同的 a 和 b 组合。
只是希望你在 a 和 b 列上有一个索引。
| 归档时间: |
|
| 查看次数: |
2971 次 |
| 最近记录: |