MySQL 按 CASE 排序

And*_*ewS 0 mysql sql

我不能让它为我工作。

ORDER BY cl.name ASC'); 
Run Code Online (Sandbox Code Playgroud)

我必须改为:

ORDER BY CASE cl.name WHEN "Nameone" THEN 0 WHEN "Nametwo" THEN 1 ELSE 2 END ASC
Run Code Online (Sandbox Code Playgroud)

我得到了结果

1. Nameone
2. Nametwo
Run Code Online (Sandbox Code Playgroud)

(其余的但不是按 AZ 的名称排序,但我认为是按 id 显示的)

那么如何让剩余的结果按 cl.name ASC 排序呢?

Tim*_*sen 5

只需在您的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
Run Code Online (Sandbox Code Playgroud)

请注意,添加cl.name作为第二个排序条件对名称为Nameone或 的记录没有影响Nametwo,因为这些记录的名称始终相同。