Mysql按两列具有ENUM类型的顺序排序

时间:2018-02-21 06:35:08

标签: mysql sql

我有一张医生表,其中有很多列,例如id, name, email,等,其中两列是is_featuredis_top

这两种列类型都是ENUM,其值为“' y'或者' n'。

我希望医生先让is_features='y',然后让那些医生is_top='y'is_featured='n'以及is_top='n'

基本上我想要像这样的医生的顺序:

  1. is_featured='y'
  2. is_top='y'
  3. is_featured='n'
  4. is_top='n'
  5. 任何人都可以帮助我如何实现这一目标?

    我完全不知道如何对这些类型的SQL查询进行语法处理?

1 个答案:

答案 0 :(得分:1)

在mysql中有一个快捷方式:

SELECT ...
FROM ...
ORDER BY    is_featured = 'y' DESC,
            is_top = 'y' DESC,
            is_featured = 'n' DESC,
            is_top = 'n' DESC

否则,如果您想使其成为标准的,也将在其他RDBMS中运行,请使用CASE

SELECT ...
FROM ...
ORDER BY    CASE WHEN is_featured = 'y' THEN 1 ELSE 0 END DESC,
            CASE WHEN is_top='y' THEN 1 ELSE 0 END DESC,
            CASE WHEN is_featured='n' THEN 1 ELSE 0 END DESC,
            CASE WHEN is_top='n' THEN 1 ELSE 0 END DESC