我想对一个mysql表进行排序
select id,name from tbl order by name asc;
返回
1 name1
2 name2
4 name3
5 name4
8 name5
如何排序,例如 name 3 像这样放在表的末尾
select id,name from tbl order by ["name is name3????"],name asc;
返回
1 name1
2 name2
5 name4
8 name5
4 name3
谢谢
最佳答案
使用 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
关于mysql - 排序特殊名称以在数据库中结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742062/