我有一个标记空格上的短语的查询,需要查找短语的最佳匹配。它需要先返回该匹配。我正在尝试使用where子句在单个查询中执行此操作。这可能吗?我正在尝试这些方面:
代表:我的短语
从myTable中选择名称,其中name =“my phrase”或名称如“%my phrase%”或(名称如“%my%”,名称如“%phrase%”)或(名称如“%my%”或名称如“%phrase%”)限制5;
基本上我想要匹配where子句的前五个匹配。我知道默认情况下MySQL以优化的方式评估where子句。有没有办法强迫它按顺序评估它们?如果是这样,我怎么能按照where子句的匹配顺序返回结果?
答案 0 :(得分:1)
使用全文搜索代替此。它更快,更灵活,让你得分。 Google for more
SELECT ..., MATCH(col_name) AGAINST ('my pharse') AS score FROM tbl_name WHERE MATCH(col_name) AGAINST('my pharse') ORDER BY score DESC;