MySQL中刪除重複行(重複資料)
問題:
如何從MySQL表中刪除重複行,同時保留每個唯一值的單一記錄?
範例:
考慮names表中的以下資料:
id | name |
---|---|
1 | |
2 | yahoo |
3 | msn |
4 | |
5 | |
6 | yahoo |
解:
警告:務必採取預防措施,首先在表格的測試副本上執行此操作。
要刪除所有重複行(保留一個),並保留具有最低或最高id值的記錄,請使用以下查詢:
保留最低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>
附加說明:
AND n1.id != n2.id
,以防止意外刪除所有行。 <code class="language-sql">INSERT INTO tempTableName(cellId,attributeId,entityRowId,value) SELECT DISTINCT cellId,attributeId,entityRowId,value FROM tableName;</code>
以上是如何在保留一筆記錄的同時有效率地刪除MySQL中的重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!