sql刪除重復數據的詳細方法建站知識
導讀:1建站知識重復數據,通常有兩種:一是完全重復的記錄,也就是所有字段的值都一樣;二是部分字段值重復的記錄如何seo優化推廣網站網站建設。
一. 刪除完全重復的記錄
完全重復的數據,通常是由于沒有設置主鍵/唯一鍵約束導致的。測試數據:
復制代碼 代碼如下:
if OBJECT_ID('duplicate_all') is not nulldrop table duplicate_all GO create table duplicate_all ( c1 int, c2 int, c3 varchar(100) ) GO insert into duplicate_all select 1,100,'aaa' union allselect 1,100,'aaa' union allselect 1,100,'aaa' union allselect 1,100,'aaa' union allselect 1,100,'aaa' union allselect 2,200,'bbb' union allselect 3,300,'ccc' union allselect 4,400,'ddd' union allselect 5,500,'eee'GO
網站建設教程(1) 借助臨時表
利用DISTINCT得到單條記錄,刪除源數據,然后導回不重復記錄。如果表不大的話,可以把所有記錄導出一次,然后truncate表后再導回,這樣可以避免delete的日志操作。
復制代碼 代碼如下:
if OBJECT_ID('tempdb..#tmp') is not nulldrop table #tmp GO select distinct * into #tmp from duplicate_all where c1 = 1 GO delete duplicate_all where c1 = 1 GO insert into duplicate_all select * from #tmp
(2) 使用ROW_NUMBER復制代碼 代碼如下:
with tmp as( select *,ROW_NUMBER() OVER(PARTITION BY c1,c2,c3 ORDER BY(getdate())) as num from duplicate_all where c1 = 1 ) delete tmp where num > 1
如果多個表有完全重復的行,可以考慮通過UNION將多個表聯合,插到一個新的同結構的表,SQL Server會幫助去掉表和表之間的重復行。
二. 刪除部分重復的記錄
部分列重復的數據,通常表上是有主鍵的,可能是程序邏輯造成了多行數據列值的重復。測試數據:
復制代碼 代碼如下:
if OBJECT_ID('duplicate_col') is not nulldrop table duplicate_col GO create table duplicate_col ( c1 int primary key, c2 int, c3 varchar(100) ) GO insert into duplicate_col select 1,100,'aaa' union allselect 2,100,'aaa' union allselect 3,100,'aaa' union allselect 4,100,'aaa' union allselect 5,500,'eee'GO
(1) 唯一索引
唯一索引有個忽略重復建的選項,在創建主鍵約束/唯一鍵約束時都可以使用這個索引選項。
復制代碼 代碼如下:
if OBJECT_ID('tmp') is not nulldrop table tmp GO create table tmp ( c1 int, c2 int, c3 varchar(100), constraint UQ_01 unique(c2,c3) with(IGNORE_DUP_建設網站公司KEY = ON) ) GO insert into tmp select * from duplicate_col select * from tmp
(2) 借助主鍵/唯一鍵來刪除通常會選擇主鍵/唯一鍵的最大/最小值保留,其他行刪除。以下只保留重復記錄中c1最小的行。復制代碼 代碼如下:
delete from duplicate_col where exists(select 1 from duplicate_col b where duplicate_col.c1 > b.c1 and (duplicate_col.c2 = b.c2 and duplicate_col.c3 = b.c3))
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-24 ,文章sql刪除重復數據的詳細方法建站知識主要講述標簽,標題,sql刪除重復數據的詳細方法建站知識網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_6710.html