[點(diǎn)晴永久免費(fèi)OA]SQL Server刪除重復(fù)行的6個方法
SQL Server刪除重復(fù)行是我們最常見的操作之一,下面就為您介紹六種適合不同情況的SQL Server刪除重復(fù)行的方法,供您參考。 1、如果有ID字段,就是具有唯一性的字段: delete from tableName where id not in ( select max(id) from table group by col1,col2,col3... ) group by 子句后跟的字段就是你用來判斷重復(fù)的條件,如只有col1,那么只要col1字段內(nèi)容相同即表示記錄相同。
2、如果是判斷所有字段也可以這樣【對于表中的指定的字段的進(jìn)行檢查是否相同】: select * into #temp from tablename group by id1,id2,.... delete tablename insert into table select * from #temp drop table #temp
3、首先去重復(fù),再獲取N*1條數(shù)據(jù)插入到臨時表中【對于表中的所有字段的進(jìn)行檢查是否相同】,再將原表的數(shù)據(jù)刪除,然后將臨時表的數(shù)據(jù)插入到原表,最后刪除臨時表。 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 delete # where id not in ( select max(id) from # group by col1,col2,col3...) delete from table insert into table(...) select ..... from #temp
5、col1+'',''+col2+'',''...col5 聯(lián)合主鍵: 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 子句后跟的字段就是你用來判斷重復(fù)的條件,如只有col1,那么只要col1字段內(nèi)容相同即表示記錄相同。
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...) 該文章在 2019/3/14 12:02:41 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |