SQLite 仅按第一个 WHERE 匹配排序

SQLite sort only by first WHERE match

我有一个包含 3 列的 table:namekeywordsweight,以及这些数据

name keywords weight
Kevin Any, Any, Any, Any 1
Hugh Kevin, Any, Any, Any 1

现在我想select从这个tablewhere名称或关键字匹配一个查询,并希望按名称和权重排序,但排序应该只针对where匹配名称而不是关键字,例如使用此查询:

SELECT * FROM users WHERE name LIKE '%Kevin%' OR keyword LIKE '%Kevin%' ORDER BY name, weight DESC;

此查询将 return 同时 KevinHughHugu 将在第一个然后 Kevin,我需要的是 Kevin 首先被 returned,所以如果名称匹配查询,则按 nameweight 排序,如果不是,但 keyword 匹配查询,然后执行仅按 weight 排序。

所以这里的问题是,我如何排序取决于名称是否匹配查询

我想你希望匹配项先命名:

SELECT *
FROM users
WHERE name LIKE '%Kevin%' OR keyword LIKE '%Kevin%'
ORDER BY (CASE WHEN name LIKE '%Kevin%' THEN 1 ELSE 2 END),
         weight DESC;