我有一個包含幾個字段的表t1,其中一個是INC_ID。我正在尋找並刪除重複值爲INC_ID的t1中的記錄。需要幫助理解爲什麼COUNT DISTINCT返回奇數結果
對於背景,t1中的其他列可能與具有INC_ID重複的記錄相同,但它們可能不相同。例如
INC_ID,VAL1,VAL2
144345,紅7,ABC
144345,紅7,ABC
144346,Grn2,DEF
144346,Grn2,DEF
當我執行
SELECT COUNT(*)
FROM t1
它按預期返回10,000。
當我執行
SELECT COUNT(*)
FROM t1
WHERE INC_ID IN
(SELECT INC_ID
FROM t1
GROUP BY INC_ID
HAVING COUNT(*)=1)
它返回9974。我假定這意味着我有9974條記錄與唯一的INC_ID
當我執行
SELECT COUNT(*)
FROM t1
WHERE INC_ID IN
(SELECT INC_ID
FROM t1
GROUP BY INC_ID
HAVING COUNT(*)>1)
我得到26預期。額外的檢查顯示確實有26條記錄具有重複的INC_ID,26條記錄中只有13條唯一的INC_ID。
當我運行
SELECT COUNT(DISTINCT INC_ID)
FROM t1
我得到9,987。不理解這一點,我想也許是因爲其他列不同,即使INC_ID相同,也會調用記錄。
然後我試圖
SELECT COUNT(DISTINCT INC_ID)
FROM
(SELECT INC_ID
FROM t1)
但仍然返回9,987。很明顯,我對DISTINCT的工作原理有一些缺陷。有人能解釋爲什麼這樣對我?在此先感謝您的時間。
噢好吧,謝謝你的解釋,現在完全有道理。這是我去的重複刪除方法,重複中不同的列並不重要,因此它完全可以工作。 – Travis