• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql实现删除重复数据

php 搞代码 3年前 (2022-01-22) 15次浏览 已收录 0个评论

本文主要和大家分享mysql实现删除重复数据,本文结合实例和大家讲解,希望能帮助到大家。

delete FROM `ex` WHERE phone in (SELECT c.phone
FROM `ex` as c
GROUP BY c.phone

HAVING COUNT( * ) >1) and id not in (select max(b.id) from `ex` as b group by b.phone);

注:ex(example 表名)、根据phone字段,判断是否重复。重复保留最新插入的一条(即自增id最大的)

但是,执行之后,结果不如你所愿:

/* SQL错误(1093):You can't specify target table 'ex' for update in FROM clause */

翻译:不能先select出同一表中的某些值,再update(delete)这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值。

问题只针对:mysql,不包含oracle、sql server等。因为mysql对子语句的支持性不是太好。

问题解决:


先select出的结果再通过中间表select一遍,select 的结果 起别名 就成为一个缓存的表了, 一张虚拟的表。

如图所示:就解决了mysql一条sql删除重复信息了。

为了大家方便:

DELETE  FROM   `ex`   WHERE  id NOT IN (  SELECT  id  FROM  (SELECT max(b.id) AS id  FROM `ex`  b  GROUP BY b.phone) b);

相关推荐:

Mysql删除重复数据保留最小的id

删除重复数据本¥文来源gaodai$ma#com搞$代*码*网(搞代gaodaima码sql语句

MySQL删除重复数据行,只保存一条

以上就是mysql实现删除重复数据的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql实现删除重复数据

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址