sql案例:删除多条内容相同的数据,只保留一条

原创 2013年12月04日 10:20:49

在面试中遇到的一个问题

 

create table t_delete_test (id number primary key,name varchar(20));

insert into t_delete_test (id,name) values(1,'a');
insert into t_delete_test (id,name) values(2,'b');
insert into t_delete_test (id,name) values(3,'b');
insert into t_delete_test (id,name) values(4,'a');
insert into t_delete_test (id,name) values(5,'c');
insert into t_delete_test (id,name) values(6,'c');
insert into t_delete_test (id,name) values(7,'d');

select * from t_delete_test;

 

 

 

        ID NAME

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

         1 a

         2 b

         3 b

         4 a

         5 c

         6 c

         7 d

 

 

delete from t_delete_test t1 where
t1.name in (select t2.name from t_delete_test t2 group by t2.name having count(1)>1)
and 
t1.id not in(select min(t3.id) from t_delete_test t3 group by t3.name having count(1)>1);

 

 

备注:

select t2.name from t_delete_test t2 group by t2.name having count(1)>1 //查询名字至少有一条相同的数据

select min(t3.id) from t_delete_test t3 group by t3.name having count(1)>1 //查询名字至少有一条的数据,并且只显示最小的主键号

 

 

 

相关文章推荐

数据库面试题---SQL中遇到多条相同内容只取一条的最简单实现

SQL中经常遇到如下情况,在一张表中有两条记录基本完全一样,某个或某几个字段有些许差别, 这时候可能需要我们踢出这些有差别的数据,即两条或多条记录中只保留一项。 如下:表timeand ...

SQL中遇到多条相同内容只取一条的最简单实现

SQL中经常遇到如下情况,在一张表中有两条记录基本完全一样,某个或某几个字段有些许差别, 这时候可能需要我们踢出这些有差别的数据,即两条或多条记录中只保留一项。  如下:表timeand 针对t...

sql 多条合并一条数据方法摘录

如果是oracle 10g以上 一个wm_concat函数就可以解决。   如果是oracle 9i以下就有点麻烦了。   表结构如下: NAME            ...

SQL语句 删除表user 中字段name 内容重复的记录,A表 ,B表 字段相同 有关联关系的表 对表两个表中的数据

今天去面试!我给大意了,直接写了个删除语句!又中招了。。。 在网上找了半天也没找到合适的代码! 回来想了想才知道自已太大意了!想了良久,想出了这么个办法, 今天去面试!我给大意了,直接写了个...

Sql Server exists 查询相同姓名或编号 年份最大的一条数据

转载自:http://blog.csdn.net/anihasiyou/article/details/43272901 select code,zw,zj,year from ZW a wher...

删除一个表中的重复数据同时保留第一次插入那一条以及sql优化

业务:一个表中有很多数据,在这些数据中有个别数据出现了重复的数据 目标:需要把这些重复数据删除同时保留第一次插入的那一条数据,还要保持其它的数据不受影响。 总结:在mysql数据库中,sql语句中最后...

sql删除重复数据只保留一条

用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select *...

Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例

Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例

SQL删除重复数据只保留一条

用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断  ...

DB2中 同一个表中多条数据组合成一条数据 (一条SQL实现)

SELECT  (   SELECT PERSONNAME  FROM ( select "PERSONNAME",  "GENDER",        "BIRTHDAY",   "NAT...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql案例:删除多条内容相同的数据,只保留一条
举报原因:
原因补充:

(最多只允许输入30个字)