Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL按案例排序_Mysql_Sql - Fatal编程技术网

MySQL按案例排序

MySQL按案例排序,mysql,sql,Mysql,Sql,我不能让它为我工作 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排序?只需在ORDER by子句中添加第二级排序: ORDER BY CASE WH

我不能让它为我工作

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排序?

只需在
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
nametoo
的记录无效,因为这些记录的名称始终相同。

只需在
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

在MySQL中,如果愿意,可以使用
field()
函数:

order by field(c1.name, 'Nametwo', 'NameOne') desc,
         c1.name

参数的顺序相反,因为当找不到字符串时,
field()
默认为0

您可以通过这样的条款更改订单

当'Nameone'时按案例cl.name排序,当'Nameone'时按案例cl.name排序,然后当'nameo2'时按案例'0'排序,然后按案例'1'排序,否则继续('2',合并(cl.name'))结束ASC

您可以通过以下条款更改订单

当'Nameone'时按案例cl.name排序,当'Nameone'时按案例cl.name排序,然后当'nameo2'时按案例'0'排序,然后按案例'1'排序,否则继续('2',合并(cl.name'))结束ASC

双引号
平均字段名,单引号(')平均字符串。您需要哪一个?顺便说一下,您不需要ASC。这是默认选项。双引号
平均字段名,单引号(')平均字符串。你需要哪一个?顺便说一句,你不需要ASC。默认情况下,这是一个选项。