2013-09-24 76 views
2

在Ms.Access 2010中,我有一個類似的查詢表,其中顯示重複記錄。問題是,即使我有唯一的ID,但其中一個字段與其他行的數據不同,因爲我在此查詢中組合了兩個獨立的表。我只想爲每個ID顯示一行並刪除其他行。我選哪一排並不重要。見下:從重複記錄中選取每個唯一ID一行

ID - NAME - FAVCOLOR 
1242 - John - Blue 
1242 - John - Red 
1378 - Mary - Green 

我想只選擇任何具有相同ID的行。只要我爲每個ID顯示一行都是重要的,我選擇哪一行並不重要。

ID - NAME - FAVCOLOR 
1242 - John - Red 
1378 - Mary - Green 
+0

什麼是您的實際sql查詢檢索行此刻? – legrandviking

+0

SELECT ID,NAME,FAVCOLOR FROM TABLE1; UNION ALL SELECT ID,NAME,FAVCOLOR FROM TABLE2; – user2430036

回答

2

使用當前查詢中的SQL作爲子查詢,然後使用GROUP BYIDNAME。你可以檢索最低FAVCOLOR,因爲你只需要一個而不關心哪一個。

SELECT sub.ID, sub.NAME, Min(sub.FAVCOLOR) 
FROM 
    (
     SELECT ID, [NAME], FAVCOLOR 
     FROM TABLE1 
     UNION ALL 
     SELECT ID, [NAME], FAVCOLOR 
     FROM TABLE2 
    ) AS sub 
GROUP BY sub.ID, sub.NAME; 

NAME是一個reserved word。將該名稱括起來或用表名或別名加上前綴以避免混淆數據庫引擎。

0

嘗試選擇沒有ALL參數的聯合並查看是否得到期望的結果。

新的查詢看起來像

「SELECT ID,姓名,FAVCOLOR FROM表1; UNION SELECT ID,姓名,FAVCOLOR FROM TABLE2;」

0

如果您只是想要這些ID,爲什麼查詢中的顏色?也許我錯過了一些東西。 我可以建議的唯一的事情是使用一些聚合函數(最小,最大)來獲得一種顏色。

Select 
    id, 
    name, 
    max(favcolor) 
    from (
    (select * from table1) t1 
    union (select * from table2) t2)t 
    group by 
    id, 
    name 
+0

報告需要按顏色排序這就是爲什麼需要顏色,反正我現在會試試看,看看它是否工作。 – user2430036