当我使用 AND 和 OR 对多列执行 LIKE MySQL 查询时,我的过滤器会导致查询(例如按价格 0 AND 50000 停止工作)。如果我从我的 LIKE 语句中去掉 OR,搜索工作正常。如何使用 LIKE 语句正确搜索多个列?
这是一个无工作声明的例子,其中价格被忽略
SELECT *
FROM table
WHERE Price BETWEEN 0 AND 500000
AND class_id = 1
AND TotalSqFt BETWEEN 0 AND 999999999
AND Acres BETWEEN 0 AND 999999999
AND InclusionsFeatures LIKE '%horse%'
OR Remarks LIKE '%horse%'
ORDER
BY Price DESC
该语句工作正常,但现在我只能对一列执行 LIKE 查询。
SELECT * FROM table WHERE Price BETWEEN 0 AND 500000 AND class_id = 1 AND TotalSqFt BETWEEN 0 AND 999999999 AND Acres BETWEEN 0 AND 999999999 AND InclusionsFeatures LIKE '%horse%' ORDER BY Price DESC
在第一个语句中,当您在最后一个 AND 之后添加 OR 时,Mysql 会一直运行,直到它运行 OR。如果 OR 条件通过,则 AND 之前的 All 将忽略。所以查询不能正确运行。
看看这个查询:
SELECT
*
FROM
TABLE
WHERE
Price BETWEEN 0
AND 500000
AND class_id = 1
AND TotalSqFt BETWEEN 0
AND 999999999
AND Acres BETWEEN 0
AND 999999999
AND (InclusionsFeatures LIKE '%horse%' OR Remarks LIKE '%horse%' )
ORDER BY
Price DESC
通过按括号对您的 LIKES 进行分组,它会检查括号内的条件以及所有其他带有 AND 的条件。因此查询返回匹配括号内条件和所有其他条件的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句