MySQL的SQL:特定的项目是第一个,然后sorting其余的项目

可以说我有下面的表格。

我想得到所有的朋友,但是我想让id 5成为列表中的第一项。 我不关心订单,我收到其余的项目。

所需的查询结果将是:

friends ------- id name 5 nahum 1 moshe 2 haim 3 yusuf 4 gedalia 6 dana 

我怎样才能做到这一点?

使用Mysql 5.1.x.

谢谢!

 select id,name from friends order by id=5 desc 

(因为你不关心其他的顺序,否则,例如通过id ascrest

 select id,name from friends order by id=5 desc, id asc 

尝试这个:

 select id,name from friends order by case when id=5 then -1 else id end 

如果你有更多的话,你可以做:

 select id,name from friends order by case when id in (5,15,25) then -1 else id end,id 

我现在无法访问MySQL来进行testing,因此可能会颠倒过来,但是您可以使用布尔值也可以sorting的事实,并且您可以有几个sorting字段。

 SELECT ... ORDER BY id != 5, id 

(你可能必须写id = 5 ,我不记得TRUE是否在FALSE之前或之后sorting。)

编辑:哦,我刚才读到,你不关心其余的顺序,在这种情况下,我衷心推荐@理查德的答案。

这有点难看,因为它有代码重复,但它有诀窍:

 select .... where id = 5 union select .... where not id = 5