[转]六种删除数据库重复行的方法

SQL Server删除重复行是我们最常见的操作之一,下面就为您介绍六种适合不同情况的SQL Server删除重复行的方法,供您参考。

1.如果有ID字段,就是具有唯一性的字段

  1. delect table where id not in (

  2. select max(id) from table group by col1,col2,col3...
  3. )

group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。

2. 如果是判断所有字段也可以这样

  1. select * into #aa from table group by id1,id2,....
  2. delete table
  3. insert into table
  4. select * from #aa

3. 没有ID的情况

  1. select identity(int,1,1) as id,* into #temp from tabel
  2. delect # where id not in (
  3. select max(id) from # group by col1,col2,col3...)
  4. delect table
  5. inset into table(...)
  6. select ..... from #temp

4. col1+','+col2+','...col5 联合主键

  1. select * from table where col1+','+col2+','...col5 in (
  2. select max(col1+','+col2+','...col5) from table
  3. where having count(*)>1
  4. group by col1,col2,col3,col4
  5. )

group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。

5.

  1. select identity(int,1,1) as id,* into #temp from tabel
  2. select * from #temp where id in (
  3. select max(id) from #emp where having count(*)>1 group by col1,col2,col3...)

6.

  1. select distinct * into #temp from tablename
  2. delete tablename
  3. go
  4. insert tablename select * from #temp Sqlclub
  5. go
  6. drop table #temp

以上就是SQL Server删除重复行的方法介绍。

原文地址:https://www.cnblogs.com/lmfeng/p/2167095.html