1

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

谢谢

4

1 回答 1

4

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

select 
  id, name 
from 
  tbl 
order by 
  case when name = 'name3' then 1 else 0 end,
  name

Strawberry 刚刚在评论中告诉我,您也可以使用该功能field来完成此操作。如果您想为多个名称指定特定的排序,这特别方便且更紧凑。使用case它会很快变得笨重。Field返回其他字符串列表中第一个字符串的索引,因此field(name, 'name3', 'name4')对于“name3”返回 1,对于“name4”返回 2,对于所有其他名称返回 0。

您的查询将如下所示:

select 
  id, name 
from 
  tbl 
order by 
  field(name, 'name3'),
  name
于 2013-07-19T09:02:47.053 回答