【问题标题】:MS Access -- Using Order By in a Union QueryMS Access -- 在联合查询中使用 Order By
【发布时间】:2021-07-31 19:14:22
【问题描述】:

我需要一个查询,该查询将从名为 Country 的表中选择 CountryName,这样“美国”总是排在最前面,而所有其余国家/地区都按字母顺序排列。我使用了以下代码,其目的是仅选择美国,然后使用联合在美国之后按字母顺序添加所有其他国家。它似乎有效,但我随后注意到,当向表中添加一些其他国家/地区时,美国按要求排在首位,但添加的国家/地区只是附加到查询结果中(即不是按字母顺序为所需)。有什么想法吗?我不确定在 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;

【问题讨论】:

    标签: ms-access sql-order-by union


    【解决方案1】:

    如您所见,UNION 忽略了子查询的 ORDER BY。但是,不需要 UNION 查询。计算一个值以进行排序:

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

    【讨论】:

    • 非常感谢 - 这是完美的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多