如何根据列中其他人之前的特定值对mysql结果进行排名?

时间:2015-10-02 13:40:45

标签: mysql

我有一个这样的数据库表:

id   name       email               level      memberdate
1    Joe        joe@gmail.com       silver     04/09/2015
2    Peter      perter@gmail.com    bronze     05/09/2015
3    John       john@gmail.com      gold       06/09/2015
4    Jack       jack@gmail.com      bronze     09/09/2015

对于特定需要,我想查询首先列出铜牌级别的人名,然后是其他人。它也应该是由memberdate DESC命令(也适用于结果的其余部分),因此结果看起来像这样

id   name       email               level     memberdate
1    Jack       jack@gmail.com      bronze    09/09/2015
2    Peter      perter@gmail.com    bronze    05/09/2015 
3    John       john@gmail.com      gold      06/09/2015
4    Joe        joe@gmail.com       silver    04/09/2015

非常感谢,

1 个答案:

答案 0 :(得分:1)

CASE内使用ORDER BY表达式。

<强>查询

select * from table_name 
order by case when level = 'Bronze' then 1
else 2 end,memberdate desc;

SQL Fiddle