php - MySQL LIKE 语句返回奇数结果
问题描述
当我使用 AND 和 OR 对多列执行 LIKE MySQL 查询时,我的过滤器会导致查询(例如 by Price 0 AND 50000)停止工作。如果我从我的 LIKE 语句中删除 OR,则搜索工作正常。如何使用 LIKE 语句正确搜索多个列?
这是忽略 Price 的无工作语句的示例
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 之前的所有内容都将被忽略。所以查询不能正确运行。
看看这个查询:
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。因此查询返回匹配括号内的条件和所有其他条件的数据。
推荐阅读
- node.js - 如何将 Apollo Server 异步附加到 Lambda 处理程序?
- java - 我的通知是在不满足我在代码中设置的条件的情况下发送的
- java - 有没有办法检索 ADT?使用 DDMTemplateLocalServiceUtil 似乎不是要走的路
- mongodb - Mongodb聚合查询根据从另一个集合获得的列表获取数据
- python - Python Pandas 根据条件添加 Max 列
- powershell - Powershell 结合了多个字符串操作
- javascript - 摆弄简单的灯箱效果。图像不会消失
- html - 将 svg 加载器添加到 html5 画布
- javascript - Why are csrf token's usually stored in hidden form fields?
- java - 为什么 cellInfo 的大小为零?当我用 TelephonyManager 得到它时它为零