zhaozhenfei500 2012-09-06 18:36
浏览 220
已采纳

SQL删除重复数据

[code="sql"]delete from biao where chongfuziduan in (select chongfuziduan from biao group by chongfuziduan having count(*)>1) and where qitatiaojian [/code]
为什么这样写,数据库报错?数据库是mysql,另求更好的删除重复数据方法

  • 写回答

3条回答 默认 最新

  • jinnianshilongnian 2012-09-06 19:46
    关注

    --这种方式不行,会抛出 You can't specify target table '×××' for update in FROM clause 因为mysql不支持在更新时 在子查询中出现同表

    delete from a where chongfuziduan in (select a from biao group by chongfuziduan having count(*)>1)

    1、有主键(id)情况下:
    Delete a1
    From biao a1
    join biao a2 on a1.chongfuziduan =a2.chongfuziduan and a1.id> a2.id

    没主键情况
    1、没主键情况:
    1.1、先建一个临时表(带自动生成主键)
    1.2、将biao数据插入到临时表
    1.3、然后进行【1】的操作
    1.4、先删除biao数据,再把数据插入biao
    1.5、删除临时表

    2、
    2.1、select distinct 数据 到临时表
    2.2、删除biao数据 再插入临时表数据

    [url]http://dadloveu.blog.51cto.com/715500/196309/[/url]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境