SQL Server中刪除重複資料的幾個方法
資料庫的使用過程中由於程式方面的問題有時候會碰到重複資料,重複資料導致了資料庫部分設定不能正確設定……
方法一
方法二
有兩個意義上的重複記錄,一是完全重複的記錄,也即所有欄位均重複的記錄,二是部分關鍵欄位重複的記錄,比如Name欄位重複,而其他欄位不一定重複或都重複可以忽略。
1、對於第一種重複,比較容易解決,使用
就可以得到無重複記錄的結果集。
如果該表需要刪除重複的記錄(重複記錄保留1條),可以按以下方法刪除
發生這種重複的原因是表設計不周產生的,增加唯一索引列即可解決。
2、這類重複問題通常要求保留重複記錄中的第一條記錄,操作方法如下
假設有重複的欄位為Name,Address,要求得到這兩個欄位唯一的結果集
最後一個select即得到了Name,Address不重複的結果集(但多了一個autoID欄位,實際寫時可以寫在select子句中省去此列)
方法一
declare @max integer,@id integer declare cur_rows cursor local for select 主欄位,count(*) from 表名 group by 主欄位 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主欄位 = @id fetch cur_rows into @id,@max end close cur_rows set rowcount 0 |
方法二
有兩個意義上的重複記錄,一是完全重複的記錄,也即所有欄位均重複的記錄,二是部分關鍵欄位重複的記錄,比如Name欄位重複,而其他欄位不一定重複或都重複可以忽略。
1、對於第一種重複,比較容易解決,使用
select distinct * from tableName |
就可以得到無重複記錄的結果集。
如果該表需要刪除重複的記錄(重複記錄保留1條),可以按以下方法刪除
select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp |
發生這種重複的原因是表設計不周產生的,增加唯一索引列即可解決。
2、這類重複問題通常要求保留重複記錄中的第一條記錄,操作方法如下
假設有重複的欄位為Name,Address,要求得到這兩個欄位唯一的結果集
select identity(int,1,1) as autoID, * into #Tmp from tableName select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp where autoID in(select autoID from #tmp2) |
最後一個select即得到了Name,Address不重複的結果集(但多了一個autoID欄位,實際寫時可以寫在select子句中省去此列)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-624899/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mongodb 刪除重複資料的幾個方法MongoDB
- 刪除重複資料的幾個方法(轉)
- MS SQL Server 刪除重複行資料SQLServer
- oracle 刪除重複資料的幾種方法Oracle
- Oracle中刪除重複資料的SqlOracleSQL
- T-SQL 刪除重複資料SQLSQL
- 在SQL Server中快速刪除重複記錄(轉)SQLServer
- sqlserver中刪除重複資料SQLServer
- Oracle中刪除表中的重複資料Oracle
- mysql 刪除表中重複的資料MySql
- PostgreSQL刪除表中重複資料SQL
- 刪除重複資料
- 刪除重複資料的三種sql寫法SQL
- mysql查詢表裡的重複資料方法和刪除重複資料MySql
- 刪除重複資料的一種高效的方法
- 重複資料刪除和SSD的互補方法
- mongodb刪除重複資料MongoDB
- MySQL刪除重複資料MySql
- Oracle查詢重複資料與刪除重複記錄方法Oracle
- SQL Server 批量刪除重複記錄(批量、快速、安全)SQLServer
- SQL刪除重複資料,只保留一行SQL
- T-SQL技術收集——刪除重複資料SQL
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- 刪除表裡重複資料
- MYSQL中刪除重複記錄的方法薦MySql
- 重複資料刪除:備份中的“消重加速器”
- Oracle 刪除表中重複記錄的DELETE SQLOracledeleteSQL
- MySQL資料庫中刪除重複記錄的方法總結[推薦]MySql資料庫
- oracle刪除重資料方法Oracle
- 使用Java Stream API中DistinctBy刪除重複資料JavaAPI
- oracle 查詢及刪除表中重複資料Oracle
- mysql 查詢及 刪除表中重複資料MySql
- sql server 中刪除內容重複的某條記錄SQLServer
- 解析postgresql 刪除重複資料案例SQL
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- Java刪除ArrayList中的重複元素的2種方法Java
- 用SQL語句刪除重複記錄的四種方法SQL
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle