Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql查询不符合条件_Php_Mysql_Sql - Fatal编程技术网

Php Mysql查询不符合条件

Php Mysql查询不符合条件,php,mysql,sql,Php,Mysql,Sql,因此,我有以下mysql查询,它可以工作,但不是正确的方式: SELECT * FROM (`CriteriaItems`) INNER JOIN `Address` ON `Address`.`address_id` = `CriteriaItems`.`address_id` WHERE `criteria_id` = '2' AND `status` = 'published' AND `mls_id` LIKE '%123%' OR `Address`.`address

因此,我有以下mysql查询,它可以工作,但不是正确的方式:

SELECT * FROM (`CriteriaItems`) INNER JOIN `Address` ON `Address`.`address_id` = `CriteriaItems`.`address_id` WHERE `criteria_id` = '2' AND `status` = 'published' AND `mls_id` LIKE '%123%' OR `Address`.`address` LIKE '%123%' LIMIT 10 问题是,我看到它返回的结果也是status=deleted,这是因为``Address.addressLIKE'%123%'如果我删除它,它会工作,但我需要它

因此,它也支持在地址表中搜索,但只基于CriteriaItems`.`address_id

您需要用括号括起来:

SELECT * 
FROM `CriteriaItems`
JOIN `Address` 
  ON `Address`.`address_id` = `CriteriaItems`.`address_id` 
WHERE `criteria_id` = '2' 
  AND `status` = 'published' 
  AND (`mls_id` LIKE '%123%' OR `Address`.`address` LIKE '%123%')
LIMIT 10;
还可以考虑使用orderby来获得稳定的结果

简单布尔逻辑:

p1 AND p2 AND p3 OR p4 is true <=> (p1 AND p2 AND p3) is true OR p4 is true
因为AND运算符的优先级高于OR,所以现在您的查询是这样工作的

WHERE `criteria_id` = '2' 
AND (`status` = 'published' AND `mls_id` LIKE '%123%') 
OR `Address`.`address` LIKE '%123%' LIMIT 10
有关这方面的更多信息,请参见

因此,您需要使用括号来正确应用条件

WHERE `criteria_id` = '2' 
AND `status` = 'published' AND 
(`mls_id` LIKE '%123%' OR `Address`.`address` LIKE '%123%')
LIMIT 10

您应该添加一个解释,说明为什么这是在WHERE子句中需要括号的解决方案。或者,也许,而不是或。
WHERE `criteria_id` = '2' 
AND `status` = 'published' AND 
(`mls_id` LIKE '%123%' OR `Address`.`address` LIKE '%123%')
LIMIT 10