sql 刪除重複資料的方法
--建立表 並在表中新增重複資料
CREATE TABLE [dbo].[repeat](
[emp_no] [nvarchar](50) NULL,
[name] [nvarchar](50) NULL,
[age] [int] NULL
) ON [PRIMARY]
-- 插入測試資料
insert into repeat values('000','zhangSan',20);
insert into repeat values('001','weiMeng',22);
insert into repeat values('002','weiMeng',22);
insert into repeat values('003','liu',23);
insert into repeat values('004','liu',23);
insert into repeat values('005','liu',23);
insert into repeat values('006','li',24);
insert into repeat values('007','li',24);
insert into repeat values('008','li',24);
insert into repeat values('009','li',24);
-- 刪除臨時資料 方法一 (藉助臨時表) 適合全部欄位重複的情況
select distinct * into #tmp from repeat --過濾非重複的資料到臨時表
delete from repeat --刪除重複表裡的所有資料
insert into repeat select * from #tmp --把臨時表的資料 插入到表裡
drop table #tmp
--刪除臨時資料 方法二(藉助特殊列-自增長列) 適合部分欄位重複的情況
alter table repeat add rowNo int identity(1,1); --新增自增長列
delete from repeat where (select count(*) from repeat r where r.name=repeat.name and r.rowNo < repeat.rowNo ) > 0;
alter table repeat drop column rowNo ;--刪除自增長列