首頁 > 資料庫 > mysql教程 > 如何在保留一筆記錄的同時有效率地刪除MySQL中的重複行?

如何在保留一筆記錄的同時有效率地刪除MySQL中的重複行?

Barbara Streisand
發布: 2025-01-23 13:37:10
原創
687 人瀏覽過

How Can I Efficiently Delete Duplicate Rows in MySQL While Keeping One Record?

MySQL重複行刪除指南:高效率保留唯一記錄

本文說明如何從MySQL表中刪除重複數據,並保留每組重複資料中的一筆記錄。 雖然可以使用SELECT DISTINCT篩選出唯一值,但本文將重點放在如何使用DELETE指令來達成這個目標。

重要提示:

在執行任何刪除操作之前,請務必備份您的表,以防止意外資料遺失。

保留ID最小的記錄:

要保留重複項中ID最小的行,請執行下列SQL語句:

<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name;</code>
登入後複製

保留ID最大的紀錄:

要保留重複項中ID最大的行,請執行下列SQL語句:

<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 (或 AND n1.id > n2.id) 子句。 忽略此條件可能會導致刪除表中所有行。

替代方案:

為了獲得更高的效能,請考慮使用以下INSERTDISTINCT查詢:

<code class="language-sql">INSERT INTO tempTableName (cellId, attributeId, entityRowId, value)
SELECT DISTINCT cellId, attributeId, entityRowId, value
FROM tableName;</code>
登入後複製

隨後,您可以刪除原始表並重新命名臨時表。 此方法避免了直接刪除數據,從而提高了效率和安全性。

以上是如何在保留一筆記錄的同時有效率地刪除MySQL中的重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板