SQL Server删除重复行的6个方法
2016-06-12 10:37
387 查看
转载地址:http://www.cnblogs.com/qinpengming/archive/2013/02/08/2909343.html
用的第二种方法解决的问题。SQL Server删除重复行是我们最常见的操作之一,下面就为您介绍六种适合不同情况的SQL Server删除重复行的方法,供您参考。
1.如果有ID字段,就是具有唯一性的字段
delect table tableName where id not in ( select max(id) from table group by col1,col2,col3... )
group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。
2. 如果是判断所有字段也可以这样 ,【对于表中的指定的字段的进行检查是否相同】
select * into #temp from tablename group by id1,id2,....
delete tablename
insert into table select * from #temp
drop table #temp
3. 首先去重复,再获取N*1条数据插入到临时表中,【对于表中的所有字段的进行检查是否相同】,再将原表的数据删除,然后将临时表的数据插入到原表,最后删除临时表。
select distinct * into #temp from tablename
delete tablename
go
insert tablename select * from #temp
go
drop table #temp
4. 没有ID的情况
select identity(int,1,1) as id,* into #temp from tabel
delect # where id not in (
select max(id) from # group by col1,col2,col3...)
delect table
inset into table(...)
select ..... from #temp
5. col1+','+col2+','...col5 联合主键
select * from table where col1+','+col2+','...col5 in (
select max(col1+','+col2+','...col5) from table
where having count(*)>1
group by col1,col2,col3,col4
)
group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。
6.
select identity(int,1,1) as id,* into #temp from tabel
select * from #temp where id in (
select max(id) from #emp where having count(*)>1 group by col1,col2,col3...)
业精于勤荒于嬉 行成于思毁于随
相关文章推荐
- mysql性能调优和架构设计读书笔记
- mysql的innodb中事务日志(redo log)ib_logfile
- 关于SQLSERVER去掉如何重复值的记录
- MySQL5.6的my.ini配置
- 玩转mongodb(七):索引,速度的引领(全文索引、地理空间索引)
- 数据库5 索引 动态哈希(Dynamic Hashing)
- Mysql字段类型——字符类型
- 从分布式数据库结构入手讲解其前世今生
- spark-sql
- Memcached是什么?【小强性能培训学员作品】
- 数据库连接池的好处
- MongoDB的golang驱动安装 + 首次调用Mongo Command。
- [PHP][REDIS]phpredis 'RedisException' with message 'read error on connection'
- memcache缓冲雪崩现象
- 推荐数据库、Web、Net、架构的PDF数据,书不在多,在看!
- oracle——多表查询
- 解决 Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()
- mysql 数据库备份方案及策略
- SQL分页存储过程实例
- 【译】MySQL – The Error Log