我有这段代码:
$r=mysql_query("SELECT * FROM advertisements WHERE exposure!='0' AND `status`='2' AND clicks_left_micro>0 OR clicks_left_mini>0 OR clicks_left_standard>0 OR clicks_left_extended>0");
上面的代码,只能在我的数据库中获得2个第一行。 (请查看下面的图片): http://i51.tinypic.com/dejiw.png
为什么选择所有3行,当我具体说 status =“2”?
我该如何解决这个问题?
提前致谢。
答案 0 :(得分:4)
这是你拥有的:
SELECT * FROM advertisements
WHERE exposure!='0'
AND `status`='2'
AND clicks_left_micro>0
OR clicks_left_mini>0
OR clicks_left_standard>0
OR clicks_left_extended>0
但我认为这就是你真正想要的:
SELECT * FROM advertisements
WHERE exposure!='0'
AND `status`='2'
AND (clicks_left_micro>0
OR clicks_left_mini>0
OR clicks_left_standard>0
OR clicks_left_extended>0)
答案 1 :(得分:0)
您必须使用括号来尊重布尔运算符优先级。
答案 2 :(得分:0)
尝试将OR部分封装在括号中
AND clicks_left_micro>0 OR clicks_left_mini>0 OR
clicks_left_standard>0 OR clicks_left_extended>0
更改为
AND (clicks_left_micro>0 OR clicks_left_mini>0 OR
clicks_left_standard>0 OR clicks_left_extended>0)
应该解决它。