在2010年的Ms.Access中,我有一个类似的查询表,如下面的一个显示重复记录。问题是,即使我有唯一的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 :(得分:2)
将当前查询中的SQL用作子查询,然后使用GROUP BY
ID
和NAME
。您可以检索最小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。使用表名或别名命名或为其添加前缀的括号,以避免混淆数据库引擎。
答案 1 :(得分:0)
尝试选择不带ALL参数的union,看看是否得到了所需的结果。
您的新查询看起来像
“SELECT ID,NAME,FAVCOLOR FROM TABLE1; UNION SELECT ID,NAME,FAVCOLOR FROM TABLE2;”
答案 2 :(得分:0)
如果您只想要ID,为什么查询中的颜色?也许我错过了什么。 我唯一能建议的是使用一些聚合函数(min,max)来获得一种颜色。
Select
id,
name,
max(favcolor)
from (
(select * from table1) t1
union (select * from table2) t2 )t
group by
id,
name