sql 中的排序列

Ordering columns in sql

我在数据库中有数据


德国
印度
美国
中国
日本
非洲


我想要一个 sql 查询结果:


印度(第一行是印度)
非洲(所有其他按字母顺序排列)
日本
美国
中国(最后一行是中国)


您可以使用多个级别的排序:

order by col = 'India' desc, col = 'China', col

基本原理:在MySQL中,表达式col = <val> returns 1 如果满足条件,否则0。所以 col = 'India' desc 将印度放在第一位,而 col = 'China' 将中国放在最后。然后按国家/地区名称的常规排序打破关系。

在MySQL中,您可以:

order by (col = 'India') desc,
         (col = 'China') asc,
         col asc

或使用 case 表达式:

order by (case when col = 'India' then 1
               when col = 'China' then 3
               else 2
          end)
         col