首页  >  问答  >  正文

去除重复的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 天前444

全部回复(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
  • 取消回复