如何从MySQL中删除重复行(保留一行)
在维护整洁高效的数据库时,删除重复数据至关重要。虽然使用SELECT DISTINCT
之类的查询选择唯一值很简单,但通过DELETE
操作删除重复项需要稍微不同的方法。
使用DELETE删除重复项
要从表中删除重复行,同时保留一个副本,您可以使用两种DELETE
查询变体:
保留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>
请注意,这些查询使用内部联接(JOIN
)根据name
列比较行。然后,它们根据一行比另一行的ID值更高或更低的条件来识别和删除重复行。
注意事项:
AND n1.id != n2.id
可确保如果行具有相同的名称但不同的ID值,则不会删除这些行。使用INSERT的替代方法:
对于较大的表,使用带DISTINCT
的INSERT
是删除重复项的更有效方法。
<code class="language-sql">INSERT INTO tempTableName(cellId, attributeId, entityRowId, value) SELECT DISTINCT cellId, attributeId, entityRowId, value FROM tableName;</code>
此方法创建一个仅包含唯一值的新表,从而有效地删除重复项。
以上是如何删除MySQL中的重复行并保留一行?的详细内容。更多信息请关注PHP中文网其他相关文章!