sql - MySql:根据列重复值删除表行?

标签 sql mysql duplicate-removal

我有一个包含年份列的表,该列不应有重复值。所以我最终得到了一个只有一个 2007 年记录的表格。

那么我怎样才能删除那些具有重复年份值的行呢?

谢谢

最佳答案

我认为您可以简单地尝试使用 IGNORE 添加一个 UNIQUE INDEX:

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);

MySQL 应该响应如下内容:

Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0

当然,您将由 MySQL 决定删除哪些行。

编辑:

这适用于任意多的列:

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);

CREATE INDEX 上查看 MySQL 的文档.一个常见的陷阱(至少我遇到过一次)是忘记 NULL = NULL 不是真的(但是 NULL),因此 {42, NULL} 和 { 42, NULL} 允许用于两列上的 UNIQUE 索引。

关于sql - MySql:根据列重复值删除表行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3861919/

相关文章:

MySQL 如何将 `SUM` 一个值放在多对一关系上,在有多个值的情况下只取1的最大值?

sql - 在 MySQL 中加入两个子查询

mysql - SQL : Order by when a value looks like a date

MySQL - 制作一个(简单的?)带有标签的搜索引擎

javascript - 如何在 SQL 中替换 json 字符串中的数字数组?

sql - BigQuery:使用标准SQL从Google Analytics(分析)数据中选择星期

php - UTF-8贯穿始终

mysql - 使用连接从表中删除重复行

mysql - 删除没有主键的表中的重复行

oracle - 如何防止在选择查询中选择重复的行?