SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02'
AND `status` = 'active' OR `status` = 'past due'
在这个例子中,你会得到所有的记录,其中无论是
一)date_next_payment是2011 2月2日之前和状态是活跃
B)的状态是past_due
所以past_due记录不会受日期限制。
SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02'
AND (`status` = 'active' OR `status` = 'past due')
在这个例子中,你会得到所有记录
一)date_next_payment是2011年2月2日
和
B)状态可以是主动或past_due 前
括号的工作方式与他们在数学或逻辑中的工作方式一样 - 括号内的语句首先得到评估...所以想象看到每一步都像第是:
SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02'
AND (`status` = 'active' OR `status` = 'past due')
所以一个记录与活跃状态遇到...
SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02'
AND (TRUE OR FALSE)
这再评估,与OR条件......(TRUE或FALSE)== TRUE
SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02'
AND TRUE
和日期是2011-01-01
SELECT * FROM (`users`) WHERE TRUE
AND TRUE
最后,TRUE
SELECT * FROM (`users`) WHERE TRUE
,所以是返回的记录...
想象查询真时真==步骤执行这样对每行中的数据库有时帮助来理解把你的括号。