MS Access——在联合查询中使用 Order By

MS Access -- Using Order By in a Union Query

我需要一个查询,该查询将 select 来自 table 命名国家/地区的 CountryName,以便“美国”始终排在首位,所有其余国家/地区紧随其后按字母顺序。我使用了下面的代码,其目的是select只有美国,然后使用联盟将所有其他国家按字母顺序添加到美国之后。它似乎有效,但我随后注意到,当一些额外的国家被添加到 table 时,美国按预期排在首位,但添加的国家只是附加到查询结果中(也就是说,不是根据需要按字母顺序排列)。有什么想法吗?我不确定我想要的东西是否可以在 Access 中实现。 “我在 Office 360​​ 中使用 Access 版本。)

SELECT * from 
( 
SELECT Country.CountryDesc FROM Country where (((Country.CountryDesc)="united states"))
) dummy_alias1

UNION ALL SELECT * from
(
SELECT Country.CountryDesc  FROM Country WHERE (((Country.CountryDesc)<>"united states")) 
ORDER BY Country.CountryDesc
) dummy_alias2;

如您所见,UNION 忽略了子查询的 ORDER BY。但是,不需要 UNION 查询。计算排序依据的值:

SELECT Country.* 
FROM Country 
ORDER BY IIf(CountryDesc = "United States", 1, 2), CountryDesc;