使用Select 語句刪除MySQL 中的非唯一行
提供的查詢語法
DELETE FROM posts where> 嘗試從posts中刪除沒有唯一ID 的行。但是,此語法與 MySQL 5.0 不相容。 <p><strong>重寫查詢</strong></p><p>要使查詢與 MySQL 5.0 相容,應重寫如下:</p> <p>`</p><pre class="brush:php;toolbar:false">從 id所在的貼文中刪除(<pre class="brush:php;toolbar:false">SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
)
理解修改後的查詢
修改後的查詢使用IN 運算子將posts 表的id 列與子查詢的結果集進行比較。此子查詢檢索在 posts 表中出現多次的行的 ID,表示 ID 不唯一。透過使用 IN 運算符,查詢僅選擇具有非唯一 ID 的行進行刪除。
其他注意事項
正如答案參考中提到的,這是必不可少的需要注意的是,MySQL 不允許從同一查詢中的子查詢修改同一表。為了規避此限制,可以將查詢分為兩個單獨的查詢:一個用於標識要刪除的行的 SELECT 查詢,然後是一個用於執行刪除的 DELETE 查詢。或者,可以使用帶有別名的嵌套子查詢來允許在單一查詢中進行刪除。
以上是MySQL 5.0中如何有效率地刪除非唯一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!