我的查询是:
SELECT DISTINCT LanguageCode
FROM myTable
ORDER BY (CASE WHEN LanguageCode='GB' THEN 0 ELSE 1 END), LanguageCode
目标是获取语言,但首先要获取 GB 语言。 我收到此错误:
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
我看过这个问题的答案: Reason for - ORDER BY items must appear in the select list if SELECT DISTINCT is specified
但我仍然不明白为什么它适用于我(以及如何解决它),因为我只访问一个列。
答案 0 :(得分:1)
不知何故,同事找到了一个解决方法:
SELECT DISTINCT (CASE WHEN LanguageCode='GB' THEN 0 ELSE 1 END) AS IsGB, LanguageCode
FROM myTable
ORDER BY IsGB ASC, LanguageCode
答案 1 :(得分:0)
改为使用聚合:
SELECT LanguageCode
FROM myTable
GROUP BY LanguageCode
ORDER BY (CASE WHEN LanguageCode = 'GB' THEN 0 ELSE 1 END),
LanguageCode
有些数据库对 ORDER BY
中的非聚合表达式很挑剔。如果是这种情况,那么您可以使用:
SELECT LanguageCode
FROM myTable
GROUP BY LanguageCode
ORDER BY MAX(CASE WHEN LanguageCode = 'GB' THEN 0 ELSE 1 END),
LanguageCode