mysql:首先是特定的项目,然后按时间顺序对其余部分进行排序,然后从开头

时间:2016-01-13 18:34:29

标签: mysql

假设我有下表:

friends
_______

id    name
1     johnny
2     tam
3     slick
4     mat
5     Rhanda
6     Tommy
7     ike
8     Spencer
9     Alan

我想获取所有朋友列表,但我希望id 5成为列表中的第一项。我希望下一个项目按时间顺序跟踪到最后。然后列表从头开始,直到返回所有结果。所以它应该像这样结束......

friends
_______

id    name
5     Rhanda
6     Tommy
7     ike
8     Spencer
9     Alan
1     johnny
2     tam
3     slick
4     mat

我已经找到并尝试了这个但是你可以想象它只返回第一个项目,然后从1起订购其余的项目。我已经搜索并研究了这个2天了,真的可以使用一些帮助。有什么建议?

2 个答案:

答案 0 :(得分:1)

您可以将表达式添加到order子句中,如下所示:

select id, name from table
order by
         case when id >= 5 then 0 else 1 end
        , id

答案 1 :(得分:1)

您可以使用:

order by (id >= 5) desc, id

首先将所有ID设置为5或更高。然后它按升序对每个部分进行排序。

MySQL将布尔表达式视为整数上下文中的整数,0表示false,1表示true。因此,要将真值放在第一位,需要desc