zoukankan      html  css  js  c++  java
  • 删除表中重复记录且保留一个

    create table test1(

       id ;

       name;

       primary key ('id');

    -----------------------------------------

    ID          NAME

    1             A

    2             A

    3             B

    4             B

    5             C

    6             C

    ------------------------------------------

    需求:

    删除表中name值重复的行,并保留重复记录中id值最小的行

    解决:

    mysql:

    DELETE from test1 where name IN(select a.name from (SELECT name from test1 GROUP BY name HAVING count(name) > 1) a) and id not IN(SELECT b.id from (SELECT min(id) as id from test1  GROUP BY name HAVING count(name) > 1) b);

    oracle:

    DELETE from test1 where name IN(SELECT name from test1 GROUP BY name HAVING count(name) > 1) and id not IN(SELECT min(id) as id from test1  GROUP BY name HAVING count(name) > 1);

    注意:

    如果在mysql中用oracle写法,会报错:[Err] 1093 - You can't specify target table 'test1' for update in FROM clause(你不能更新指定目标的表在from子句中)

  • 相关阅读:
    JAVA_集合_作业01
    Java_Objects_hashCode
    Java成员内部类
    Java集合练习_实现购物车需求
    Java初级_单例设计模式
    HelloWorld
    vue中视频标点
    防抖节流?俩者区别?vue如何使用防抖、节流来解决点击问题?
    keep-alive
    axios和ajax的区别
  • 原文地址:https://www.cnblogs.com/badoumi/p/5285804.html
Copyright © 2011-2022 走看看