我想对mysql表进行排序
select id,name from tbl order by name asc;
返回
1 name1
2 name2
4 name3
5 name4
8 name5
如何命令例如名称3转到表格的末尾,如
select id,name from tbl order by ["name is name3????"],name asc;
返回
1 name1
2 name2
5 name4
8 name5
4 name3
谢谢
答案 0 :(得分:4)
使用case
,您可以根据条件返回值。因此,您可以为name3
返回1,为其他名称返回0。主要对此值进行排序,将name3放在后面。辅助排序值是名称,因此其他名称仍按字母顺序排序。
select
id, name
from
tbl
order by
case when name = 'name3' then 1 else 0 end,
name
草莓只是在评论中教我,你也可以使用函数field
来实现这一点。如果要为多个名称指定特定排序,这将特别方便且更紧凑。使用会很快变得笨重的case
。 Field
返回其他字符串列表中第一个字符串的索引,因此field(name, 'name3', 'name4')
将为'name3'返回1,为'name4'返回2,为所有其他名称返回0。
您的查询将如下所示:
select
id, name
from
tbl
order by
field(name, 'name3'),
name