我有一张医生表,其中有很多列,例如id, name, email,
等,其中两列是is_featured
和is_top
。
这两种列类型都是ENUM
,其值为“' y'或者' n'。
我希望医生先让is_features='y'
,然后让那些医生is_top='y'
和is_featured='n'
以及is_top='n'
基本上我想要像这样的医生的顺序:
is_featured='y'
is_top='y'
is_featured='n'
is_top='n'
任何人都可以帮助我如何实现这一目标?
我完全不知道如何对这些类型的SQL查询进行语法处理?
答案 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