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