让我们有一个简单的InnoDB表questions
,其中包含一列text
,其中包含以下数据:
What color does the sun have?
What year it is?
What year was Barack Obama born?
Where in europe people speak french?
When stackoverflow started?
现在,我想搜索一下这个专栏:
SELECT *
FROM `questions`
WHERE `text` LIKE '%What%' OR `text` LIKE '%year%';
然而,这会产生输出:
What color does the sun have?
What year it is?
What year was Barack Obama born?
我希望通过搜索单词的出现来排序输出。换句话说,当问题包含“什么”和“年”时,它应该在仅包含“什么”的问题之前。所以输出看起来像这样:
What year it is?
What year was Barack Obama born?
What color does the sun have?
这可以仅使用MySQL完成吗?如果没有,使用PHP有一个很好的方法吗?
答案 0 :(得分:3)
最简单的方法是将以下order by
添加到查询中:
order by (`text` LIKE '%What%') + (`text` LIKE '%year%') desc
如果性能是一个问题,那么你应该研究MySQL全文函数。它们显着加快了许多全文搜索。