You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何让LIKE查询匹配结果优先排序,其余结果紧随其后

MySQL实现LIKE匹配结果优先排序的方案

你当前的查询将LIKE '%Korea%'写在WHERE子句中,会直接过滤所有不匹配的行,因此只能返回South Korea一条结果,这不是排序函数的问题,是过滤逻辑设置错误导致的。另外你原语句的LIKE条件语法有误,匹配字符串需要用单引号包裹,正确写法是LIKE '%Korea%'。

要实现匹配结果优先、其余结果紧随的效果,需要把LIKE匹配逻辑从WHERE过滤条件转移到ORDER BY排序规则中,利用MySQL布尔表达式返回0/1的特性实现排序:

  • 匹配到关键词的行,data LIKE '%Korea%'返回值为1
  • 未匹配到关键词的行,返回值为0
    按该值倒序排列即可把匹配行放在最前面,后续可追加次级排序规则自定义未匹配行的排列顺序。

符合你需求的查询语句如下:

SELECT * 
FROM `table`
ORDER BY 
  -- 匹配到Korea的行优先排在最前
  `data` LIKE '%Korea%' DESC,
  -- 未匹配行按data字段字母升序排列,刚好符合你给出的预期输出顺序
  `data` ASC;

如果你需要同时保留其他过滤条件(比如排除空值行),只需要把对应条件写到WHERE子句中即可,不要把LIKE匹配的逻辑放进去:

SELECT * 
FROM `table`
WHERE `data` IS NOT NULL AND `data` != ''
ORDER BY 
  `data` LIKE '%Korea%' DESC,
  `data` ASC;

内容的提问来源于stack exchange,提问作者june

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:54:02