国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server表中重復數據的刪除方法

2020-07-02 13:06:12
字體:
來源:轉載
供稿:網友

如果表中有多組完全不同的重復的 PK 值,則逐個刪除它們會很費時間。在這種情況下,可使用下面的方法:

1.首先,運行上面的 GROUP BY 查詢來確定有多少組重復的 PK 值及每組的重復數。

2.選擇重復的鍵值放入臨時表中。例如:

SELECT col1, col2, col3=count(*)

INTO holdkey

FROM t1

GROUP BY col1, col2

HAVING count(*) > 1

3.選擇重復的行放入臨時表中,以清除進程中的重復值。例如:

SELECT DISTINCT t1.*

INTO holddups

FROM t1, holdkey

WHERE t1.col1 = holdkey.col1

AND t1.col2 = holdkey.col2

4.此時,holddups 表應有唯一的 PK;但是,如果 t1 有重復的 PK 而行唯一(如上面的 SSN 示例),情況就不是這樣了。請驗證 holddups 中的各個鍵是否唯一,是否沒有鍵重復而行唯一的情況。如果是這樣,您必須停在該處,確定對于給定重復的鍵值,您希望保留哪些行。例如,以下查詢:

SELECT col1, col2, count(*)

FROM holddups

GROUP BY col1, col2

應為各行返回計數 1.如果結果是 1,請繼續執行下面的步驟 5.如果不是 1,則存在鍵重復而行唯一的情況,且需要您決定要保存哪些行。通常,這將需要舍棄行或為此行創建新的唯一的鍵值。為 holddups 表中每個此種重復 PK 執行這兩個步驟之一。

5.從原始表中刪除重復的行。例如:

DELETE t1

FROM t1, holdkey

WHERE t1.col1 = holdkey.col1

AND t1.col2 = holdkey.col2

6.將唯一行放回原始表中。例如:

INSERT t1 SELECT * FROM holddups


(責任編輯:VEVB)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼木县| 安宁市| 安徽省| 玛曲县| 北宁市| 北票市| 错那县| 桐庐县| 通江县| 北川| 唐海县| 调兵山市| 玉环县| 府谷县| 新田县| 称多县| 龙州县| 长垣县| 松滋市| 通化县| 南昌市| 台南县| 新平| 黔江区| 策勒县| 晋江市| 长寿区| 泸西县| 印江| 高台县| 安多县| 斗六市| 寿宁县| 临潭县| 荆门市| 康定县| 疏勒县| 宁陕县| 囊谦县| 瓮安县| 金昌市|