首頁  >  問答  >  主體

移除重複的MySQL記錄,僅保留一個

<p>如何刪除重複的MySQL記錄(但只保留一個)</p> <p>大家好,我有一個問題,我有幾個具有相同ID的記錄,我想刪除重複的記錄,但只保留一條。有沒有使用mysql語句的任何想法? </p> <p>我有這個語句可以查看記錄和重複數量,但當我使用刪除語句時它對我不起作用:</p> <pre class="brush:php;toolbar:false;">SELECT email, COUNT(email) FROM contacts GROUP BY email HAVING COUNT(email) > 1;</pre> <p>我使用這個語句,但它只會刪除一筆重複記錄:</p> <pre class="brush:php;toolbar:false;">DELETE FROM wp_options WHERE option_id=5 limit 1;</pre> <p>有沒有辦法批次處理? </p> <p>更新:我正在使用這個語句,但它刪除了所有重複的記錄而沒有保留一條:</p> <pre class="brush:php;toolbar:false;">DELETE FROM xhi_options WHERE option_id IN (SELECT option_id FROM (SELECT option_id FROM xhi_options GROUP BY option_id HAVING COUNT(option_id) > 1) AS T)</pre></p>
P粉916760429P粉916760429396 天前445

全部回覆(2)我來回復

  • P粉776412597

    P粉7764125972023-08-26 00:32:58

    在你的刪除語句中,你使用了limit 1選項,這表示你只會刪除一筆記錄。

    嘗試修復你的程式碼,像這樣:

    DELETE FROM wp_options WHERE option_id=5 limit (dupl_rec_count - 1);

    回覆
    0
  • P粉621033928

    P粉6210339282023-08-26 00:15:25

    您可以使用此方法保留具有最低id值的行

    DELETE e1 FROM contacts e1, contacts e2 WHERE e1.id > e2.id AND e1.email = e2.email;

    這是一個範例連結 連結1

    或您可以將>更改為<以保留最高id

    DELETE e1 FROM contacts e1, contacts e2 WHERE e1.id < e2.id AND e1.email = e2.email;

    這是一個範例連結 連結2

    回覆
    0
  • 取消回覆