代码之家  ›  专栏  ›  技术社区  ›  k00k

MySQL匹配长WHERE和OR语法的查询?

  •  1
  • k00k  · 技术社区  · 15 年前

    以下查询没有按我预期的方式工作:

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

    这是返回比我预期更多的结果-它没有限制我的结果对那些'榆树'。

    我需要做一个子查询还是什么来提取颜色的东西?正确的语法会很有帮助,谢谢!

    3 回复  |  直到 15 年前
        1
  •  4
  •   Ash Burlaczenko    15 年前

    这样写行吗

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

    希望这有帮助。

        2
  •  0
  •   hsz    15 年前

    也许括号会有用?

    SELECT DISTINCT * 
    FROM mytable 
    WHERE MATCH (StrNum, StrName, StrType, TownName, Zip) AGAINST ('elm') 
    AND ( Color = 'RED' OR Color = 'WHITE' OR Color = 'BLUE' )
    
        3
  •  0
  •   user1994804 user1994804    10 年前

    使用MATCH-AGAINST要求搜索的每个单词至少有4个字符(默认情况下是这样),因此“Elm”将被忽略。

    推荐文章