Access操作與SQL語句:重複數據處理

在EXCEL中處理重複數據有如下幾種方法:

  • 函數
  • 條件格式標識
  • 高級篩選
  • 數據透視表

那麼,在Access中,處理重複數據的方法包含重複項查詢、不重複項查詢以及數據去重查詢,同樣可以通過菜單操作、SQL語句兩種方式完成。

重複項查詢

1. 菜單操作法

在新建簡單查詢時,對話框中就有一項“查找重複項查詢嚮導”功能,那麼,就可以使用這個功能來查找數據重複項。
在這裏插入圖片描述
以“訂購明細表”中重複的用戶ID爲例,具體查詢操作如下:

  1. 單擊【創建】選項卡,在【查詢】組中單擊【查詢嚮導】按鈕;
  2. 在彈出的對話框中,選擇【查找重複項查詢嚮導】,單擊確定按鈕;
  3. 在彈出的【查找重複項查詢嚮導】第一個對話框中,選擇【表】視圖,比您在列表框中選擇“訂購明細”表作爲查詢對象,單擊【下一步】按鈕;
    在這裏插入圖片描述
  4. 在【查找重複項查詢嚮導】第二個對話框【可用字段】列表框中,選擇“用戶ID”作爲要進行查找重複項查詢的字段,單擊【完成】按鈕;
  5. 查詢結果如下所示,包含重複訂購的用戶ID,每個重複訂購用戶所重複訂購的次數。
    在這裏插入圖片描述

2. SQL查詢法

單擊右下角的SQL按鈕,簡化後的語句如下:

SELECT First(用戶ID),Count(用戶ID) AS NumberOfDups
FROM 訂購明細
GROUP BY 用戶ID
HAVING Count(用戶ID) > 1;

說明:

  1. First,是第一條記錄的意思。有第一就有最後,其函數是Last。如果有用戶重複訂購,那麼我們也可不適用Fisrt函數,直接使用字段表示即可,“用戶ID”取哪個值都是一樣的;
  2. GROUP BY子句就是實現對數據按指定的分組字段進行分組,本例中按用戶進行分組,這與數據透視表分組統計的道理是一致的;
  3. HAVING子句在SELECT語句中與GROUP BY子句聯合使用,用於表示GROUP BY子句輸出結果的條件,其作用相當於WHERE子句之於SELECT語句。即WHERE子句設定被選擇字段的條件,而HAVING子句設置GROUP BY子句形成的分組條件。
    另外它們都需要使用關係比較運算符:=、<、>、<=、>=、或<>。
    在本例中,“HAVING Count(用戶ID)>1”的意思就是對用戶ID出現2次及以上的數據進行分組。

不重複項查詢

既然重複項是用戶訂購次數大於或等於2次的結果,那麼不重複項不就是用戶訂購次數等於1的結果麼?也就是說,我們只需在剛纔查找重複項的SQL語句中,把HAVING Count(用戶d)>1”更改爲“HAVING Count(用戶D)=1”即可

SELECT First(用戶ID),Count(用戶ID) AS NumberOfDups
FROM 訂購明細
GROUP BY 用戶ID
HAVING Count(用戶ID) = 1;

數據去重查詢

1. GROUP BY子句

剛纔對重複項和不重複項的查找都是在HAVING子句設置GROUP BY子句形成的分組條件進行的,如果要去重,就不需要設置條件,顯示出所有唯一的“用戶ID”,直接用GROUP BY“用戶ID”字段即可。SQL語句如下:

SELECT 用戶ID
FROM 訂購明細
GROUP BY 用戶ID;

結果如下所示:
在這裏插入圖片描述

2. DISTINCT關鍵字

在Access數據庫中,還可以使用DISTINCT關鍵字,它的作用是忽略所選字段中包含重複數據的記錄,簡單來說,就是數據去重。
如剛纔的案例中,找出所有有購買行爲的“用戶ID”,但只保留其中一條,SQL語句如下:

SELECT DISTINCT 用戶ID
FROM 訂購明細;

結果如下所示:
在這裏插入圖片描述
需要注意的是:如果SELECT子句中包含多個字段,則對於結果中包含的特定記錄,其所有字段的值組合必須是唯一的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章