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

Mysql 将特殊名称排序到数据库中的结尾,mysql,Mysql,我想对mysql表进行排序 select id,name from tbl order by name asc; 返回 1 name1 2 name2 4 name3 5 name4 8 name5 1 name1 2 name2 5 name4 8 name5 4 name3 如何排序,例如名称3到表的末尾,如 select id,name from tbl order by ["name is name3????"],name asc; 返回 1 name1 2

我想对mysql表进行排序

select id,name from tbl order by name asc;
返回

1  name1
2  name2
4  name3
5  name4
8  name5
1  name1
2  name2
5  name4
8  name5
4  name3
如何排序,例如名称3到表的末尾,如

select id,name from tbl order by ["name is name3????"],name asc;
返回

1  name1
2  name2
4  name3
5  name4
8  name5
1  name1
2  name2
5  name4
8  name5
4  name3

谢谢

使用
案例
可以根据条件返回值。因此,您可以为
name3
返回1,为其他名称返回0。主要根据该值排序,将name3放在后面。第二个排序值是名称,因此其他名称仍按字母顺序排序

select 
  id, name 
from 
  tbl 
order by 
  case when name = 'name3' then 1 else 0 end,
  name
草莓刚刚在评论中告诉我,你也可以使用这个函数来实现这一点。如果您想为多个名称指定特定的排序,这尤其方便且更紧凑。使用
case
会很快变得笨重
Field
返回其他字符串列表中第一个字符串的索引,因此
Field(name,'name3','name4')
将为'name3'返回1,为'name4'返回2,为所有其他名称返回0

您的查询将如下所示:

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

使用
case
可以根据条件返回值。因此,您可以为
name3
返回1,为其他名称返回0。主要根据该值排序,将name3放在后面。第二个排序值是名称,因此其他名称仍按字母顺序排序

select 
  id, name 
from 
  tbl 
order by 
  case when name = 'name3' then 1 else 0 end,
  name
草莓刚刚在评论中告诉我,你也可以使用这个函数来实现这一点。如果您想为多个名称指定特定的排序,这尤其方便且更紧凑。使用
case
会很快变得笨重
Field
返回其他字符串列表中第一个字符串的索引,因此
Field(name,'name3','name4')
将为'name3'返回1,为'name4'返回2,为所有其他名称返回0

您的查询将如下所示:

select 
  id, name 
from 
  tbl 
order by 
  field(name, 'name3'),
  name
@草莓-你是说?很好,我不知道该函数,但如果我理解正确,您可以将我的查询更改为
按字段排序(name,'name3'),name
。谢谢你的提示!不,我是指字段()!?;-)@草莓-你是说?很好,我不知道该函数,但如果我理解正确,您可以将我的查询更改为
按字段排序(name,'name3'),name
。谢谢你的提示!不,我是指字段()!?;-)