我有一个带有Year列的表,并且此列不应有重复的值。因此,我最终得到一张仅具有2007年记录的表格。
那么,如何删除具有重复年份值的行呢?
谢谢
我认为您可以尝试使用IGNORE添加唯一索引:
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),因此在两列的UNIQUE索引中允许使用{42,NULL}和{42,NULL}。
NULL = NULL
NULL