使用 SQL 消除 MySQL 中的重複行
MySQL 資料庫中的重複行可能會導致資料不一致和效能問題。本文重點在於基於「site_id」、「title」和「company」列從表格(例如「jobs」)中刪除重複行。
雖然複雜的 SQL 查詢可以辨識重複項,但更有效的方法是利用 MySQL 的索引功能。 這涉及建立一個唯一索引,它會自動處理重複行刪除。
唯一索引方法(已棄用)
以前,一個簡單的解決方案涉及使用帶有 ALTER IGNORE TABLE
索引的 UNIQUE
語句:
<code class="language-sql">ALTER IGNORE TABLE jobs ADD UNIQUE INDEX idx_name (site_id, title, company);</code>
此方法在索引建立期間自動刪除重複行。 然而,這種方法在 MySQL 5.6 中已被棄用,並在更高版本中被刪除。
優點(對於較舊的 MySQL 版本):
現代 MySQL 解決方案(5.7 及更高版本):
對於 MySQL 5.7 及更高版本,不再支援 ALTER IGNORE TABLE
方法。 相反,使用帶有子查詢的 DELETE
語句來刪除重複項。 這需要更複雜的方法,但請確保與目前 MySQL 版本的兼容性。 典型的解決方案涉及使用 GROUP BY
子句和 HAVING
子句來識別重複項以過濾大於 1 的計數,然後根據特定條件刪除多餘的行(例如,保留 ID 最低的行)。 確切的查詢取決於您的特定需求和表格結構。 有關此方法的詳細範例,請參閱 MySQL 文件。
以上是如何僅使用 SQL 有效率地刪除 MySQL 中的重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!