去除重复的MySQL记录,仅保留一个
P粉916760429
P粉916760429 2023-08-25 15:38:04
[MySQL讨论组]

如何删除重复的MySQL记录(但只保留一个)

大家好,我有一个问题,我有几条具有相同ID的记录,我想删除重复的记录,但只保留一条。有没有使用mysql语句的任何想法?

我有这个语句可以查看记录和重复数量,但当我使用删除语句时它对我不起作用:

SELECT 
    email, 
    COUNT(email)
FROM
    contacts
GROUP BY email
HAVING COUNT(email) > 1;

我使用这个语句,但它只删除一条重复记录:

DELETE FROM wp_options  WHERE option_id=5 limit 1;

有没有办法批量处理?

更新:我正在使用这个语句,但它删除了所有重复的记录而没有保留一条:

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)

P粉916760429
P粉916760429

全部回复(2)
P粉776412597

在你的删除语句中,你使用了limit 1选项,这意味着你只会删除一条记录。

尝试修复你的代码,像这样:

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

您可以使用此方法保留具有最低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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号