Mysql “AND”和“AND”或“OR”是否在同一查询中起作用?
我使用了一个同时具有and和or逻辑的查询。这是我的查询Mysql “AND”和“AND”或“OR”是否在同一查询中起作用?,mysql,sql,Mysql,Sql,我使用了一个同时具有and和or逻辑的查询。这是我的查询 select * from products_event where products_event.active > 0 and is_event_activated > 0 and is_user_activated > 0 and quantity > 0 and products_event.name like '%" . $search_ke
select *
from products_event
where products_event.active > 0
and is_event_activated > 0
and is_user_activated > 0
and quantity > 0
and products_event.name like '%" . $search_keyword . "%'
or products_event.short_desc like '%" . $search_keyword . "%'
我得到了一个结果,但它也列出了活动列的值为“0”的产品等等
php my admin也没有在查询中显示任何错误
谢谢您需要添加括号。试试这个:
select *
from products_event
where products_event.active > 0
and is_event_activated > 0
and is_user_activated > 0
and quantity > 0
and
(products_event.name like '%" . $search_keyword . "%'
or products_event.short_desc like '%" . $search_keyword . "%')
您需要尊重逻辑运算符的优先级。并且优先于或,就像在数学中乘法优先于加法一样。括号确保首先满足您的或条件 您的第一个查询在语法上也是正确的,因此您自然不会看到任何错误
select *
from products_event
where products_event.active > 0
and is_event_activated > 0
and is_user_activated > 0
and quantity > 0
and
(products_event.name like '%" . $search_keyword . "%'
or products_event.short_desc like '%" . $search_keyword . "%')
在SQL中,通常在所有逻辑处理器中,并且优先于或,因此如果您这样做:
Where A and B or C
它将被执行为
Where (A and B) or C
因此,为了避免混淆和提高可读性,在使用多个不同条件时,始终建议使用括号