SQL执行条件判断时是有先后顺序的,
具体顺序如下:
(按最优先到最后,从左至右排列)
()、not、and、or
最优先执行的是()内的判断条件,然后到not,再到and,最后才判断or。
SELECT COUNT(1) FROM RT_CUSTALLOCRESULT WHERE REGDATE BETWEEN '2014-03-01' AND '2014-03-31'
OR (DATE(NEXTTRACKDATE) BETWEEN '2014-03-01' AND '2014-03-31') AND SALEID = 2003
SELECT COUNT(1) FROM RT_CUSTALLOCRESULT WHERE (REGDATE BETWEEN '2014-03-01' AND '2014-03-31'
OR (DATE(NEXTTRACKDATE) BETWEEN '2014-03-01' AND '2014-03-31')) AND SALEID = 2003
没带括号前,优先执行
(DATE(NEXTTRACKDATE) BETWEEN '2014-03-01' AND '2014-03-31') AND SALEID = 2003
带了括号后,优先执行
(REGDATE BETWEEN '2014-03-01' AND '2014-03-31' OR (DATE(NEXTTRACKDATE) BETWEEN '2014-03-01' AND '2014-03-31'))