如何從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中文網其他相關文章!