mysql - 删除具有两个重复字段但没有重复 ID 的 MySQL 行

标签 mysql sql duplicates

抱歉,我意识到我的标题令人困惑。请让我解释一下。

我有一个如下所示的数据库:

| i | a | b |
| 1 | 5 | 8 |
| 2 | 3 | 3 |
| 3 | 3 | 6 |
| 4 | 5 | 8 |
| 5 | 1 | 1 |
| 6 | 3 | 3 |

其中 i 是 ID,ab 是另外两个字段。正如你在上面看到的,ID 2 和 ID 6 都有 a = 3b = 3。 ID 1 和 ID 4 也是如此,a 都是 5,b 都是 8。即使 ID 号不同,我仍然认为这些行是重复的,并且希望删除除一个以外的所有行。哪一个都没有关系,并且不必更改 ID 号来弥补差距(但我并不反对)。

我很乐意将上面的例子变成这样的查询:

| i | a | b |          | i | a | b |
| 3 | 3 | 6 |          | 1 | 5 | 8 |
| 4 | 5 | 8 |    or    | 2 | 3 | 3 |
| 5 | 1 | 1 |          | 3 | 3 | 6 |
| 6 | 3 | 3 |          | 5 | 1 | 1 |

请不要犹豫,询问更多详情,提前致谢!

最佳答案

delete from your_table
where i not in 
(
    select * from 
    (
      select min(i)
      from your_table
      group by a, b 
    ) x
)

MySQL 无法从它正在选择的表中删除。这就是为什么我使用 select * from () x

对 select 进行了子查询

关于mysql - 删除具有两个重复字段但没有重复 ID 的 MySQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871469/

相关文章:

sql - 数据透视表返回带有 NULL 的多行,结果应分组在一行上

python - 调用 drop_duplicates 后索引包含重复条目

python - Python 重复数据删除 - "Records do not line up with data model"

ruby-on-rails-3 - Rails 克隆复制或复制

mysql - Sqoop 导出到 MySQL 导出作业失败工具.ExportTool 但得到记录

mysql - mysql中的where子句中如何使用and运算符?

MySQL:数据量大

mysql - 使用 Play2.2.0 和 Ebean 验证数据失败

php - 添加新数据库条目时如何触发 .php 页面的刷新(重新加载)?

java - Java + Oracle 中的 SQL 查询