SQL搜索和where子句的顺序情况

时间:2014-03-16 14:52:05

标签: sql sql-order-by sql-like

我有一个简单的搜索功能

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)

1 个答案:

答案 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;