我有一个简单的搜索功能
SELECT bar FROM `foo`
WHERE (bar like '%search1%') || (bar like '%search2%') ... (maybe more)
我想订购一个最精确答案的结果。
如果我的桌子像这样
1 : sometext search1 sometext
2 : sometext search2 sometext
3 : search1 search2 sometext
我想将第3行放到结果的顶部(因为它包含search1和search2)
答案 0 :(得分:1)
您可以在order by
中执行此操作。这是一般方法:
SELECT bar
FROM `foo`
ORDER BY ((case when bar like '%search1%' then 1 else 0 end) +
(case when bar like '%search2%' then 1 else 0 end) +
. . .
) desc;