MySQL中删除重复行(重复数据)
问题:
如何从MySQL表中删除重复行,同时保留每个唯一值的单条记录?
示例:
考虑names表中的以下数据:
id | name |
---|---|
1 | |
2 | yahoo |
3 | msn |
4 | |
5 | |
6 | yahoo |
解决方案:
警告:务必采取预防措施,首先在表的测试副本上执行此操作。
要删除所有重复行(保留一个),并保留具有最低或最高id值的记录,请使用以下查询:
保留最低id值:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name</code>
保留最高id值:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name</code>
附加说明:
AND n1.id != n2.id
,以防止意外删除所有行。<code class="language-sql">INSERT INTO tempTableName(cellId,attributeId,entityRowId,value) SELECT DISTINCT cellId,attributeId,entityRowId,value FROM tableName;</code>
以上是如何在保留一条记录的同时高效删除MySQL中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!