按desc排序除外

时间:2017-05-27 15:14:47

标签: mysql sql

以下是带结果的查询:

SELECT id, name FROM medic WHERE x=z ORDER BY name ASC

1. Aric
2. Bodi
3. Copi
4. Dori
5. Edo
6. Other
7. Poyo
8. Quex
9. Razix
10. Zika

如果我需要展示" 其他"最后的结果如下:

1. Aric
2. Bodi
3. Copi
4. Dori
5. Edo
7. Poyo
8. Quex
9. Razix
10. Zika
6. Other

3 个答案:

答案 0 :(得分:2)

一种选择是使用CASE表达式订购:

SELECT
    id,
    name
FROM medic
WHERE x=z
ORDER BY
    CASE WHEN name <> 'Other' THEN 0 ELSE 1 END,
    name

答案 1 :(得分:2)

在MySQL中,您只需使用布尔表达式:

ORDER BY (name <> 'Other') DESC,
         name

MySQL将布尔表达式视为数字上下文中的数字,其中“1”表示true,“0”表示false。 (我碰巧喜欢这个惯例,并希望其他数据库也有类似的支持。)在这些情况下,这很方便。

答案 2 :(得分:0)

在ORDER BY子句中使用两个表达式,或者,我们可以用“高”值替换我们想要的值。

ORDER BY IF(t.name='Other', 'ZZZZZZZ', t.name)