1. 程式人生 > >Sqlserver刪除重複資料的方法

Sqlserver刪除重複資料的方法

方法一
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)

相關推薦

Sqlserver刪除重複資料方法

方法一 declare @max integer,@id integer declare cur_rows cursor local for select 主欄位,count() from 表名 group by 主欄位 having count() >

MS SQLSERVER刪除重複資料且只保留一條

背景:表Per_CheckIn,主要欄位:pid--身份證號,checktime-刷身份證時間,由於誤操作,導致了重複記錄產生,現需將pid和checktime一樣的記錄刪除。具體表結構:CREATE TABLE [Per_CheckIn]( [id] [INT] IDEN

sql 刪除重複資料方法

--建立表 並在表中新增重複資料 CREATE TABLE [dbo].[repeat](     [emp_no] [nvarchar](50) NULL,     [name] [nvarchar](50) NULL,  &n

刪除重複資料刪除所有重複資料不同處理方法

仔細想才發現處理過程是不一樣的,刪除重複資料要刪除後面重複的保留第一個,刪除所有的是把包括第一次出現的一起刪除了。不知道有沒有理解對。下面是一次作業的程式碼,比較懶沒有把和刪除無關的部分截掉。// a01101.cpp : Defines the entry point f

ORACLE刪除重複資料的一種高效的方法

刪除重複資料的一種高效的方法 表demo是重複拷貝自dba_objects,有88萬左右,不重複的是27323,沒有索引 方法一:delete   from   demo   a   where   a.rowid   <>   (select   max(

SQL Server中刪除重複資料的幾個方法

資料庫的使用過程中由於程式方面的問題有時候會碰到重複資料,重複資料導致了資料庫部分設定不能正確設定……   方法一declare @max integer,@id integer declare cur_rows cursor local for select 主欄位,c

sqlserver 2008 R2 刪除重複資料

推薦方法3 --方法1: SELECT  * FROM    ( SELECT    Row_Number() OVER ( PARTITION BY [orderno] ORDER BY ( SELECT                                 

MySQL刪除重複資料,只保留其中最大id的一條

今天同事寫了個刪除重複資料保留一條記錄的資料庫語句,問我錯在哪兒,正好給大家講講【注:以下語句只單對MYSQL資料庫】 語句 -- 問題: delete from `show` where id not in  (  select MAX(id)

Oracle刪除重複資料並且只留其中一條資料

資料庫操作中,經常會因為導資料造成資料重複,需要進行資料清理,去掉冗餘的資料,只保留正確的資料 一:重複資料根據單個欄位進行判斷 1、首先,查詢表中多餘的資料,由關鍵欄位(name)來查詢。 select * from   table_name  where name in (sel

sqlserver 查詢重複資料

1 use StudentManageDB 2 go 3 insert into ScoreList (StudentId,CSharp,SQLServerDB)values(100006,52,80) 4 insert into ScoreList (StudentId,CSharp,SQLS

mongodb分組統計,並且刪除重複資料

// 找出按pipe_id過濾重複的資料展示出來,第一個match是查詢條件,$group是分組條件,後一個match是count>1的才展示出來,allowDiskUse:true允許到硬碟操作  db.flow_data.aggregate([{ $match: {

postgres 刪除重複資料、生成隨機數、跨庫查詢、一段間隔後的時間

postgres刪除重複資料 sql語句: delete from table where ctid not in (select min(ctid) from table group by tableColumn) 其中: table是資料表表名, tableColumn是判

MySQL刪除重複資料的解決方案

對於重複的資料,有兩種情況: 1️⃣兩行資料完全相同 2️⃣某欄位相同 3️⃣id不同,其他欄位相同 第1️⃣種情況的解決方案: 思路: 1.查出表中所有行,不顯示重複行。 2.建立一張臨時表,儲存查到的新表資料。 3.刪除原表資料 4.把臨時表的資料插入到原表中。 5.刪除臨時

Mongodb資料庫刪除重複資料

具體程式碼如下: db.boss_python.aggregate([ { $group: { _id: {job_id: '$job_id'},count: {$sum: 1},dups: {$addToSet: '$_id'}}

mongoDb刪除重複資料

注:mongodb當前版本是3.4.3 插入六條資料: 查詢存在重複的資料: 查詢並迴圈刪除重複資料: 刪除語句解析: db.userInfo.aggregate([     {         $group: { _id: {userN

Oracle 刪除重複資料只留一條

查詢及刪除重複記錄的SQL語句 1、查詢表中多餘的重複記錄,重複記錄是根據單個欄位(Id)來判斷 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 2、刪除

MySQL中刪除重複資料只保留一條

用SQL語句,刪除掉重複項只保留一條 在幾千條記錄裡,存在著些相同的記錄,如何能用SQL語句,刪除掉重複的呢  1、查詢表中多餘的重複記錄,重複記錄是根據單個欄位(peopleId)來判斷 SELECT * FROM people WHERE pe

用儲存過程刪除重複資料且留下一條資料

本來打算用一條sql直接執行,但是資料量太大,所以正好拿儲存過程練練。感謝我的同事對我的幫助。 要求:刪除相同order_id的其他多餘資料。id是主鍵 思路:對資料根據order_id排序,這樣相同資料就會緊挨著,然後使用遊標,也就是迴圈,對比上下兩條記錄的order_

oracle 刪除重複資料 保留rowid 最小的行

舉個例子:     這要刪除 id 重複的行,只保留最小的 sql 語句就是: delete from table_name t1 where rowid not in(        select min(rowid

mysql查詢表裡的重複資料方法

    INSERT INTO hk_test(username, passwd) VALUES ('qmf1', 'qmf1'),('qmf2', 'qmf11')   delete from hk_test where username=