可以说我有下表.
我希望得到所有朋友,但我希望id 5成为列表中的第一项.我不关心我收到其余项目的顺序.
所需的查询结果将是:
friends
-------
id name
5 nahum
1 moshe
2 haim
3 yusuf
4 gedalia
6 dana
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
使用Mysql 5.1.x.
谢谢!
Ric*_*iwi 134
select id,name
from friends
order by id=5 desc
Run Code Online (Sandbox Code Playgroud)
(假设您不关心其余的顺序,否则,例如通过id asc休息)
select id,name
from friends
order by id=5 desc, id asc
Run Code Online (Sandbox Code Playgroud)
Dum*_*dan 46
试试这个:
select id,name
from friends
order by case when id=5 then -1 else id end
Run Code Online (Sandbox Code Playgroud)
如果你有一个以上你可以做的:
select id,name
from friends
order by case when id in (5,15,25) then -1 else id end,id
Run Code Online (Sandbox Code Playgroud)
我现在无法访问 MySQL 进行测试,因此它可能会被颠倒...但是您可以使用布尔值也可以排序的事实,并且您可以有多个排序字段。
SELECT ... ORDER BY id != 5, id
Run Code Online (Sandbox Code Playgroud)
(你可能必须写id = 5,我不记得 TRUE 是在 FALSE 之前还是之后排序。)
编辑:哦,我刚刚读到您不关心其余部分的顺序,在这种情况下,我衷心推荐@Richard 的答案。
您可以field()在 MySQL 中使用。
select id,name from friends order by field(id,5,id)
Run Code Online (Sandbox Code Playgroud)
field() 中的第一个参数表示要排序的字段,其余的就是排序。
所以 5 将首先排序,其余的从 id 开始排序(没有 5)。你可以这样做field(id,5,1,3,id)如果你想让 5、1、3 位于前面,
5 最后可以选择排序方式field(id,id,5)。第二个 id 也将排除 5。
| 归档时间: |
|
| 查看次数: |
58474 次 |
| 最近记录: |