2010-03-04 82 views
0

我有兩列(ID和Active)Access表中包含的數據如下:訪問 - 選擇不同的記錄,其中只有一列是不同的

ID | Active 
------------ 
123 | 0 
124 | 0 
125 | 0 
123 | 1 
314 | 1 
948 | 1 

我想選擇有鮮明的記錄唯一的ID(只存在一次,不僅僅是它們第一次存在),但我也需要Active值。如果我做

SELECT DISTINCT ID from table1 

我得到唯一的ID,但不是工作表。它還返回123,這在表中並不是唯一的。如果我做的:

SELECT DISTINCT * from table1 

我得到重複的ID,如果他們有不同的活動值。我需要一個查詢來獲取唯一的ID及其關聯的Sheet值。它會返回以下內容:

ID | Active 
------------ 
124 | 0 
125 | 0 
314 | 1 
948 | 1 

我是否需要將它們放到兩個不同的表中並進行外連接? Active是永遠只0或1

回答

5

使用此:

SELECT * 
FROM table1 
WHERE Id IN (SELECT Id FROM table1 GROUP BY Id HAVING COUNT(Id)=1) 
+0

這將完全離開123,而選擇不同將包括它。 – Fionnuala 2010-03-04 00:59:35

+0

我想省略123 - 它應該只有唯一的ID – 2010-03-04 01:03:33

+1

@David:我不明白。你說你想「選擇具有唯一ID的不同記錄」;這就是我提出的答案所做的,按照您在示例返回數據中請求的方式返回id爲124,125,314和948的行。它不返回id爲123的行,因爲該id出現兩次,即它不是唯一的。我能幫你嗎? – CesarGon 2010-03-04 17:28:34

1

對於其他人,如果你想至少有一個記錄返回每個ID,此後省略任何重複。類似CesarGon的子查詢會工作的查詢,只要你想爲活動的第一個或最後一個結果:

SELECT ID, First(table1.Active) as Active FROM table1 GROUP BY ID; 

這將讓你想你想:

ID | Active 
------------ 
123 | 0 
124 | 0 
125 | 0 
314 | 1 
948 | 1 

如果你想爲活動的最後一個值:

SELECT ID, Last(table1.Active) as Active FROM table1 GROUP BY ID; 

,將讓你:

ID | Active 
------------ 
123 | 1 
124 | 0 
125 | 0 
314 | 1 
948 | 1 
相關問題