mysql结果的复杂排序
我想知道是否有可能对一个结果进行排序,这样如果一列包含一个特殊的单词('misc'),它就会排在最后 当前查询: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
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;