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

SQLite如何优先排序WHERE子句中name匹配结果,再处理keyword匹配项

解决方法

你可以在ORDER BY子句中通过条件判断给不同匹配类型的记录分配排序优先级,即可实现需求。另外注意你原查询语句中字段名书写错误,表中字段为keywords(复数),原语句写的keyword会触发字段不存在的报错。

修正后的查询语句如下:

SELECT * FROM users 
WHERE name LIKE '%Kevin%' OR keywords LIKE '%Kevin%' 
ORDER BY 
  -- 第一排序规则:name匹配的记录优先级更高,排在最前
  CASE WHEN name LIKE '%Kevin%' THEN 1 ELSE 2 END ASC,
  -- 第二排序规则:name匹配的分组内按name升序排列,不影响后面仅keywords匹配的分组
  name ASC,
  -- 第三排序规则:所有分组内都按weight降序排列
  weight DESC;

排序逻辑说明

  • 首先通过CASE WHEN为每行生成隐形排序权重:匹配name的记录权重为1,仅匹配keywords的记录权重为2,按权重升序排列后,所有name匹配的记录会自动排在最前面
  • 权重相同的分组内才会执行后续排序规则:因此name ASC只会作用于name匹配的分组,不会打乱后面仅keywords匹配的分组顺序
  • 最后统一按weight DESC排序,完全符合你的规则要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:36:01