› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
pouta
V2EX  ›  MySQL

关于数据库去除重复记录,有什么优雅的写法

  •  
  •   pouta · Nov 18, 2016 · 4854 views
    This topic created in 3625 days ago, the information mentioned may be changed or developed.
    delete from demo_user where id in(
    
    //获取重复记录的 id
    select id from demo_user 
    where id > any (select id from demo_user where age in (select age from demo_user group by age having count(age) > 1))
    and id <= some (select id from demo_user where age in (select age from demo_user group by age having count(age) > 1))
    
    );
    

    报了 error: You can't specify target table 'demo_user' for update in FROM clause

    12 replies  •  2016-11-20 00:33:30 +08:00
    20150517
        1
    20150517  
       Nov 19, 2016   ❤️ 3
    先要删的记录先 insert into xxxx (select xxx from xxxx)
    然后再 delete from xxx where id in (select xxx from xxxx)
    Layne
        2
    Layne  
       Nov 19, 2016
    楼上说的这是流着泪积累的经验,楼主你值得拥有。。
    ihuotui
        3
    ihuotui  
       Nov 19, 2016 via Android
    就是用一个 id 唯一索引的表保存一次,然后改表名,即有备份又得到结果
    dalang
        4
    dalang  
       Nov 19, 2016 via iPhone
    我一般都是先把要操作的 table duplicate 一份
    caomaocao
        5
    caomaocao  
       Nov 19, 2016
    @20150517 老司机经验啊!
    pouta
        6
    pouta  
    OP
       Nov 19, 2016
    @20150517 就是说要删除的记录 先保存下来是吗
    rockpk008
        7
    rockpk008  
       Nov 19, 2016 via iPhone
    一楼绝壁有过故事
    pouta
        8
    pouta  
    OP
       Nov 19, 2016
    @dalang 我现在是学 看各位有没有更好的写法
    lrh3321
        9
    lrh3321  
       Nov 19, 2016
    @pouta 批量删除和改数据前,最好先备份。 至少能保证 SQL 写错了的时候,你可以回档。

    删库跑路并不是说着玩的
    pouta
        10
    pouta  
    OP
       Nov 19, 2016
    @lrh3321 所以各位能不能看下我写的 sql 语句
    20150517
        11
    20150517  
       Nov 20, 2016
    @rockpk008 哈哈,数据工程师多年,泪的教训太多了...不过我说的 insert 是 insert 主键就够了
    20150517
        12
    20150517  
       Nov 20, 2016
    @pouta 你要确定没问题就只保存主键,要是数据重要,量又不大,就先拷一份咯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1232 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 20:56 · PVG 04:56 · LAX 13:56 · JFK 16:56
    ♥ Do have faith in what you're doing.