sql server 去重複資料

2021-06-27 09:17:40 字數 1960 閱讀 4339

方法一:

select distinct * into #ttemp from dr_task_log--將dr_task_log中不重複的資料插入到臨時表ttemp中

drop table dr_task_log--刪除原來的表

select * into dr_task_log from #ttemp--將ttemp中不重複的資料拷貝回到dr_task_log中

drop table #ttemp--刪除臨時表ttemp

方法二:

alter table #t add id int identity--新增標識列

godelete a from  #t a where  exists(select 1 from #t where num=a.num and name=a.name and id>a.id)--只保留一條記錄

goalter table #t drop column id--刪除標識列 

方法三:(**:

想必每一位sql server開發人員都有過類似的經歷,在對資料庫進行查詢或統計的時候不時地會碰到由於表中存在重複的記錄而導致查詢和統計結果不準確。解決該問題的辦法就是將這些重複的記錄刪除,只保留其中的一條。

在sql server中除了對擁有十幾條記錄的表進行人工刪除外,實現刪除重覆記錄一般都是寫一段**,用光標的方法一行一行檢查,刪除重複的記錄。因為這種方法需要對整個表進行遍歷,所以對於表中的記錄數不是很大的時候還是可行的,如果一張表的資料達到上百萬條,用光標的方法來刪除簡直是個噩夢,因為它會執行相當長的一段時間。

四板斧——輕鬆消除重覆記錄

殊不知在sql server中有一種更為簡單的方法,它不需要用游標,只要寫一句簡單插入語句就能實現刪除重覆記錄的功能。為了能清楚地表述,我們首先假設存在乙個產品資訊表products,其表結構如下:

create table products (

productid int,

productname nvarchar (40),

unit char(2),

unitprice money

)

表中的資料如圖1:

圖表 圖1中可以看出,產品chang和tofu的記錄在產品資訊表中存在重複。現在要刪除這些重複的記錄,只保留其中的一條。步驟如下:

第一板斧——建立一張具有相同結構的臨時表

create table products_temp (

productid int,

productname nvarchar (40),

unit char(2),

unitprice money

) 第二板斧——為該錶加上索引,並使其忽略重複的值

方法是在企業管理器中找到上面建立的臨時表products _temp,單擊滑鼠右鍵,選擇所有任務,選擇管理索引,選擇新建。如圖2所示。

按照圖2中圈出來的地方設定索引選項。

圖2第三板斧——拷貝產品資訊到臨時表

insert into products_temp select * from products

伺服器: 訊息 3604,級別 16,狀態 1,行 1

已忽略重複的鍵。

它表明在產品資訊臨時表products_temp中不會有重複的行出現。

第四板斧——將新的資料匯入原表

將原產品資訊表products清空,並將臨時表products_temp中資料匯入,最後刪除臨時表products_temp。

delete products

insert into products select * from products_temp

drop table products_temp

Hive去重複資料

hive資料去重 insert overwrite table store select t.p key,t.sort word from select p key,sort word row number over distribute by p key sort by sort word as ...

SqlServer 刪除重複資料

一 過濾重複的資料 1 完全重複的記錄 select distinct 欄位1,欄位2,欄位3 from 資料表 2 部分關鍵字段重複的記錄 資料結構 角色檔案 角色編碼,角色,角色分類編碼 功 能 取出指定字段 角色分類編碼 為關鍵字的無重複資料,重複的取第一條 說 明 重覆記錄取最後一條,只需要...

sqlserver查詢去掉重複資料

說明 只要資料表 列名 資料相同,則說明是兩條重複的資料 id為資料表的主鍵自動增長 推薦使用方法一。方法一 select from 表名 a where not exists select 1 from 表名 where 列名 a.列名 and id 方法二 select a.from 表名 a ...