具有 LIKE 和 AND 子句的 MySQL 查询

标签 mysql sql

我有以下查询:

$query="SELECT * FROM products 
                 WHERE  productname LIKE '%$searchterm%' 
                 OR shortdescription LIKE '%$searchterm%' 
                 OR description LIKE  '%$searchterm%' AND VISIBLE != 0";

查询返回我想要的记录,但也返回 visible = 0 的记录。

谁能告诉我我做错了什么?

问候,卓然

最佳答案

关于operator precedence

运算符 AND 先运行,然后运行 ​​OR

所以你的查询是这样的:

$query="SELECT * FROM products 
                 WHERE  productname LIKE '%$searchterm%' 
                 OR shortdescription LIKE '%$searchterm%' 
                 OR (description LIKE  '%$searchterm%' AND VISIBLE != 0");

将您的查询修正为:

$query="SELECT * FROM products 
                 WHERE  (productname LIKE '%$searchterm%' 
                 OR shortdescription LIKE '%$searchterm%' 
                 OR description LIKE  '%$searchterm%') AND VISIBLE != 0";

关于具有 LIKE 和 AND 子句的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914978/

相关文章:

MySQL过滤掉自引用

mysql - 有没有一个SQL命令可以通过id更新大量行?

mysql - gwt tomcat,我的文件保存在哪里?

MySQL,多表更新和奇怪的结果

java - 使用左连接在 postgres 数据库中进行 SQL 查询

mysql - Rmysql查询没有返回正确的值?

mysql - SELECT subCategory 等于parentCategory = 外部表中的值

php - Propel:无交叉表的多对多关系

sql - Oracle嵌套xml解析

sql - PostgreSQL:LEFT JOIN 不返回整个左表