我无法为我工作。MySQL通过CASE订购
ORDER BY cl.name ASC');
我必须更改为:
ORDER BY CASE cl.name WHEN "Nameone" THEN 0 WHEN "Nametwo" THEN 1 ELSE 2 END ASC
我得到的结果
1. Nameone
2. Nametwo
(其余的,但它不是按名称从AZ排列,但它显示我认为ID)
那么如何使剩余结果由cl.name ASC命令?
我无法为我工作。MySQL通过CASE订购
ORDER BY cl.name ASC');
我必须更改为:
ORDER BY CASE cl.name WHEN "Nameone" THEN 0 WHEN "Nametwo" THEN 1 ELSE 2 END ASC
我得到的结果
1. Nameone
2. Nametwo
(其余的,但它不是按名称从AZ排列,但它显示我认为ID)
那么如何使剩余结果由cl.name ASC命令?
只需添加排序,以您的ORDER BY
条款的第二个层次:
ORDER BY
CASE WHEN cl.name = 'Nameone' THEN 0
WHEN cl.name = 'Nametwo' THEN 1
ELSE 2 END,
cl.name -- add this sort condition
注意添加cl.name
作为第二排序条件将对其中名称为Nameone
或Nametwo
记录中没有任何影响,因为这个名字是这些记录总是相同的。
在MySQL中,你可以使用field()
功能,如果你喜欢:
order by field(c1.name, 'Nametwo', 'NameOne') desc,
c1.name
的参数是按相反的顺序,因为如果找不到field()
默认为0的字符串。
你可以像这样改变你的ORDER BY子句。
ORDER BY CASE cl.name WHEN 'Nameone' THEN '0' WHEN 'Nametwo' THEN '1' ELSE CONCAT('2', COALESCE (cl.name,'')) END ASC
双引号“''的意思是字段名,单引号(')的意思是字符串。你需要什么? –
哪一个顺便说一句,你不需要ASC,这是默认的选项。 –