我正在尝试根据出现的字符串来查找数据集,请检查以下查询-
select name, LOCATE('test', name)
from afkapi_dev.articles
where name like '%test%'
order by LOCATE('test', name) ASC
结果集为-
结果集非常好,但是这里的问题是排序。 谁能解释为什么“测试低” 上方列出了“测试” 的原因,并提出了实现此目标的方法。
谢谢
答案 0 :(得分:1)
您似乎要求对name
进行进一步的排序。对于多级排序,可以在ORDER BY
子句中指定不同的列/表达式,并用逗号分隔,并以各自的排序顺序[ASC or DESC]
此外,您可以在LOCATE(..)
子句中为SELECT
表达式加上别名,然后在ORDER BY
中重用该表达式。这样可以防止重新计算LOCATE(..)
值。
select name, LOCATE('test', name) AS location
from afkapi_dev.articles
where name like '%test%'
order by location ASC, name ASC