我有一个包含年份列的表,该列不应有重复值。所以我最终得到了一个只有一个 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/