MySQL MATCH AGAINST查询使用长WHERE AND OR语法?

时间:2010-08-03 13:37:38

标签: mysql match where against

以下查询无法按预期方式运行:

SELECT DISTINCT * 
FROM mytable 
WHERE MATCH (StrNum, StrName, StrType, TownName, Zip) AGAINST ('elm') 
AND Color = 'RED' OR Color = 'WHITE' OR Color = 'BLUE'

这会带来比我预期更多的结果 - 它不会将我的结果限制在'elm'上。

如果我删除最后一行(AND Color ...),我可以看到我的MATCH AGAINST工作得很好,确实只限于那些'elm'。

我是否需要做一个子查询或什么来拉动颜色的东西?正确的语法将非常有用,谢谢!

3 个答案:

答案 0 :(得分:4)

这可以这样写吗

SELECT DISTINCT * FROM mytable 
WHERE MATCH (StrNum, StrName, StrType, TownName, Zip) AGAINST ('elm')
AND Color IN ('RED', 'WHITE', 'BLUE') 

希望这有帮助。

答案 1 :(得分:0)

也许括号会有帮助吗?

SELECT DISTINCT * 
FROM mytable 
WHERE MATCH (StrNum, StrName, StrType, TownName, Zip) AGAINST ('elm') 
AND ( Color = 'RED' OR Color = 'WHITE' OR Color = 'BLUE' )

答案 2 :(得分:0)

使用MATCH AGAINST对于搜索的每个单词至少需要4个字符(默认情况下仍然如此),因此“Elm”将被忽略。