首頁 > 資料庫 > mysql教程 > 如何有效率地刪除MySQL表中的重複行?

如何有效率地刪除MySQL表中的重複行?

Mary-Kate Olsen
發布: 2025-01-23 13:43:08
原創
362 人瀏覽過

How to Efficiently Delete Duplicate Rows in a MySQL Table?

MySQL表中重複行刪除方法

資料庫管理中,消除重複資料是一項常見任務。在MySQL中,可以使用DELETE指令來實現此目標。

以下是一個範例表:

<code class="language-sql">CREATE TABLE names (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);</code>
登入後複製

假設表中包含重複項:

<code class="language-sql">INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('yahoo');
INSERT INTO names (name) VALUES ('msn');
INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('yahoo');

SELECT * FROM names;</code>
登入後複製

要刪除所有重複行(保留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>
登入後複製

警告:執行任何刪除查詢之前,請務必備份您的表,以避免意外資料遺失。

對於大型表,建議使用更快的INSERT和DISTINCT方法:

```sql CREATE TEMPORARY TABLE temp_names SELECT DISTINCT id, name FROM names; TRUNCATE TABLE names; INSERT INTO names (id, name) SELECT id, name FROM temp_names; DROP TABLE temp_names; ```

以上是如何有效率地刪除MySQL表中的重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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