将特殊名称排序到数据库结尾

时间:2013-07-19 09:01:34

标签: mysql

我想对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

谢谢

1 个答案:

答案 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来实现这一点。如果要为多个名称指定特定排序,这将特别方便且更紧凑。使用会很快变得笨重的caseField返回其他字符串列表中第一个字符串的索引,因此field(name, 'name3', 'name4')将为'name3'返回1,为'name4'返回2,为所有其他名称返回0。

您的查询将如下所示:

select 
  id, name 
from 
  tbl 
order by 
  field(name, 'name3'),
  name