我正在构建一个这样的查询:
SELECT * FROM mytable
WHERE field like '%a%'
OR field like '%b%'
OR field like '%c'
我想在一个ORDER BY
子句上标记按发现的匹配数量排序 - 这与在结果集中创建一些额外列的行相似,如果a
增加b
,{在该字段中找到{1}}或c
,然后按该号码排序。
这可能不会创建某种临时表吗?
答案 0 :(得分:1)
如果这个表格很大,你可能想查看全文索引,而不是查询。
SELECT *
FROM mytable
WHERE field like '%a%'
OR field like '%b%'
OR field like '%c'
ORDER BY CASE
WHEN field like '%a%' THEN 1
ELSE 0
END + CASE
WHEN field like '%b%' THEN 1
ELSE 0
END + CASE
WHEN field like '%c%' THEN 1
ELSE 0
END