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