1

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

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

这返回的结果比我预期的要多——它并没有将我的结果限制在“榆树”上。

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

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

4

3 回答 3

4

可以这样写吗

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

希望这可以帮助。

于 2010-08-03T13:43:12.253 回答
0

也许括号会有所帮助?

SELECT DISTINCT * 
FROM mytable 
WHERE MATCH (StrNum, StrName, StrType, TownName, Zip) AGAINST ('elm') 
AND ( Color = 'RED' OR Color = 'WHITE' OR Color = 'BLUE' )
于 2010-08-03T13:39:47.197 回答
0

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

于 2014-10-28T18:09:18.903 回答