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 
  • XCode4和核心数据:如何启用SQLdebugging
  • 只有在行更改后,MySQL才会触发更新
  • 从C#中的存储过程获取返回值
  • SQL Server中的dynamic数据透视表
  • 如何从表格中select所有列,再加上像ROWNUM这样的其他列?
  • DropdownList数据源
  • multithreadingC#应用程序与SQL Server数据库调用
  • MySQL:什么是LIKE的反向版本?
  • MySQL,更好地插入NULL或空string?
  • 为什么和什么时候应该使用SPARSE COLUMN? (SQL SERVER 2008)
  • 必须声明标量variables