我无法让它对我有用。
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
(其余的但它没有按照A-Z的名字排序,但它显示我认为是id)
那么如何使其余的结果由cl.name ASC命令?
答案 0 :(得分:3)
只需在您的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
的记录无效,因为这些记录的名称始终相同。 / p>
答案 1 :(得分:0)
在MySQL中,如果您愿意,可以使用field()
函数:
order by field(c1.name, 'Nametwo', 'NameOne') desc,
c1.name
参数的顺序相反,因为field()
在找不到字符串时默认为0。
答案 2 :(得分:0)
您可以像这样更改ORDER BY子句。
ORDER BY CASE cl.name WHEN 'Nameone' THEN '0' WHEN 'Nametwo' THEN '1' ELSE CONCAT('2', COALESCE (cl.name,'')) END ASC