Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting - Fatal编程技术网

mysql结果的复杂排序

mysql结果的复杂排序,mysql,sorting,Mysql,Sorting,我想知道是否有可能对一个结果进行排序,这样如果一列包含一个特殊的单词('misc'),它就会排在最后 当前查询: select * from table order by name asc 当前结果: banjo guitar miscproduct1 miscproduct2 piano 伪代码: select * from table order by name asc, except if name like '%misc%' then sort it last 伪结果: banj

我想知道是否有可能对一个结果进行排序,这样如果一列包含一个特殊的单词('misc'),它就会排在最后

当前查询:

select * from table order by name asc
当前结果:

banjo
guitar
miscproduct1
miscproduct2
piano
伪代码:

select * from table order by name asc, 
except if name like '%misc%' then sort it last
伪结果:

banjo
guitar
piano
miscproduct1
miscproduct2

这可能吗?

您可以在ORDER BY子句中使用大小写

SELECT colName
FROM table
ORDER BY
  CASE WHEN colName LIKE 'misc%' 
    THEN concat('zzz',colName) 
    ELSE colName 
  END
演示:

您可以将其用作第一个排序参数:

ORDER BY LOCATE('misc', name), name;
如果在主题中找不到搜索字符串,则
LOCATE()
函数返回
0
,如果找到,则返回正整数

要规范包含搜索的主题的排序,您可以结合
LEAST()


首先按
if contains misc=1或0排序,然后按名称排序。我不知道怎么做。@KristianRafteseth我想Boris说了
SELECT*FROM tbl ORDER by if(名称如“%misc%”,1,0),name
ORDER BY LEAST(LOCATE('misc', name), 1), name;