zoukankan      html  css  js  c++  java
  • Mysql删除重复数据并保留一条

    需要将表中重复的数据删除,并且保留一条。

    如下,要删除un=aa的数据

    测试数据:

    思路:

    找出un=aa的所有记录,删除非记录中主键最大值的数据。

        DELETE FROM tb_user WHERE id <> (SELECT max(id) FROM tb_user) AND un='aa'

    报错如下:

    You can’t specify target table ‘tb_user’ for update in FROM clause

    原因:

    不能依照同一张表中select的数据来对同一张表进行update操作。

    解决:

    将子select到的数据放入零时表,通过零时表选择最大id。

        DELETE FROM tb_user WHERE id <> (SELECT max(id) FROM (SELECT id FROM tb_user WHERE un='aa') ) AND un='aa'

    报错:

    Every derived table must have its own alias

    原因:

    子查询出的表明必须指定别名。

    解决:

    指定一个别名即可。

        DELETE FROM tb_user WHERE id <> (SELECT max(AA.id) FROM (SELECT id FROM tb_user WHERE un='aa') AS AA) AND un='aa'

    结果:

    成功,Perfect!

  • 相关阅读:
    博客美化
    hello world
    mysql数据库索引
    Golang:线程 和 协程 的区别
    计算机网络详解
    Redis持久化机制
    nginx 详解
    多级缓存的分层架构
    svn忽略文件不提交至服务器的方法
    Mysql 事务及其原理
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286655.html
Copyright © 2011-2022 走看看