在 Sybase 中将 UNION 与 ORDER BY 一起使用不会产生预期的结果

Using UNION with ORDER BY does not produce expected results in Sybase

我有一个货币列表,例如 USD、AED、INR、EUR、GBP(按 table 货币的输入顺序)。我需要准备一个包含所有货币的查询,包括 'ALL',但排序为 'ALL' 作为第一个出现。

预期结果应按以下顺序排列:

ALL
AED
EUR
GBP
INR
USD

我的SQL是:

SELECT 'ALL' Currency
UNION ALL
SELECT Currency FROM Currencies ORDER BY Currency

但是上面的SQL由于排序的原因,AED排在第一位

AED
ALL
EUR
GBP
INR
USD

感谢您的帮助让 'ALL' 排在首位。

您可以添加用于排序的 "Rank" 列,并使用您订购的派生 table 和 select 货币列来自:

SELECT Currency FROM (
    SELECT 'ALL' Currency, 1 Rank
    UNION ALL
    SELECT Currency, 2 Rank FROM Currencies
) t
ORDER BY Rank, Currency