mysql 删除重复记录并且只保留一条

文章 未结 置顶 精帖 0 1.94w
无法显示用户头像
作者:ECode1024官方,责任编辑:ECode1024官方 5 钻石
发布于 2019-07-31
最近在做题库系统,由于在题库中添加了重复的试题,所以需要查询出重复的试题,并且删除掉重复的试题只保留其中1条,以保证考试的时候抽不到重复的题。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/d8b8ea1f-3e40-466b-894a-0ef905132d01.jpg]  表结构如下 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/7ab38ecf-3534-487f-a54a-b0eb511ac6e2.png]  查询全部重复的数据: [pre] Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1); [/pre] 删除全部重复的数据: 将上面的查询select改为delete(这样会出错的) [pre] DELETE FROM   dept WHERE   dname IN (     SELECT       dname     FROM       dept     GROUP BY       dname     HAVING       count(1) > 1         ) [/pre] 会出现如下错误: [pre] [Err] 1093 - You cant specify target table dept for update in FROM clause [/pre] 原因是:更新这个表的同时又查询了这个表,查询这个表的同时又去更新了这个表,可以理解为死锁。mysql不支持这种更新查询同一张表的操作 解决办法:把要更新的几列数据查询出来做为一个第三方表,然后筛选更新。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/2f5c636e-7700-4263-a5a2-580c49a796dc.png] 

声明:本文所有观点仅代表创作者本人,ECode1024系信息收集发布平台,ECode1024仅提供信息存储以及展示服务。若有侵权,请联系我们删除。
回复
  • 暂无任何回复,抢个沙发吧~~
推荐阅读
ECode1024 QQ交流群

打开手机QQ扫码加入 ECode1024 交流群

ECode1024 微信交流群

打开手机微信扫码关注 ECode1024 公众号