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

可以说我有下面的表格。

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

所需的查询结果将是:

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

我怎样才能做到这一点?

使用Mysql 5.1.x.

谢谢!

4 Solutions collect form web for “MySQL的SQL:特定的项目是第一个,然后sorting其余的项目”

 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 
  • 为什么我似乎不能强制Oracle 11g为单个SQL查询消耗更多的CPU
  • 一个单元格中多个值的SQL查询
  • 如何删除postgres中的枚举types值?
  • MySQL查询select上周的数据?
  • SQL:WHERE子句中的IF子句
  • 显示一对多关系为2列 - 1个唯一行(ID和逗号分隔列表)
  • 你如何返回一个表的列名?
  • 基于另一个表删除表中的所有行
  • 计数与条件不同
  • 如何在预先存在的SQL数据库上使用弹性search?
  • 如何在Rails的WHERE子句中使用ANY而不是IN?