SQL去除重复记录

SQL去除重复记录
if  not  object_id( 'Tempdb..#T' is  null
     drop  table  #T
Go
Create  table  #T([ID]  int ,[ Name ] nvarchar(1),[Memo] nvarchar(2))
Insert  #T
select  1,N 'A' ,N 'A1'  union  all
select  2,N 'A' ,N 'A2'  union  all
select  3,N 'A' ,N 'A3'  union  all
select  4,N 'B' ,N 'B1'  union  all
select  5,N 'B' ,N 'B2'
Go
 
--I、Name相同ID最小的记录(推荐用1,2,3),保留最小一条
方法1:
delete  from  #T a  where   exists( select  from  #T  where  Name =a. Name  and  ID
 
方法2:
delete  a   from  #T a  left  join  ( select  min (ID)ID, Name  from  #T  group  by  Name ) b  on  a. Name =b. Name  and  a.ID=b.ID  where  b.Id  is  null
 
方法3:
delete  from  #T a  where  ID  not  in  ( select  min (ID)  from  #T  where  Name =a. Name )
 
方法4(注:ID为唯一时可用):
delete  from  #T a  where  ID  not  in ( select  min (ID) from  #T  group  by  Name )
 
方法5:
delete  from  #T a  where  ( select  count (1)  from  #T  where  Name =a. Name  and  ID0
 
方法6:
delete  from  #T a  where  ID<>( select  top  1 ID  from  #T  where  Name =a. name  order  by  ID)
 
方法7:
delete  from  #T a  where  ID> any ( select  ID  from  #T  where  Name =a. Name )
 
select  from  #T

你可能感兴趣的:(SQL去除重复记录)