2017-05-12 39 views
4

我有一個SQL代碼,有BETWEENOR條件。BETWEEN不工作後使用OR條件mysql

SELECT * FROM tbl_order o INNER JOIN tbl_contacts c ON c.contacts_id = o.contacts_id LEFT JOIN tbl_title t ON t.title_id = c.title_id LEFT JOIN tbl_assign a ON (a.order_id = o.order_id AND a.order_no_first = o.order_no_first) WHERE o.order_status = 1 AND o.order_date BETWEEN DATE(DATE_ADD(o.order_date, INTERVAL -2 DAY) AND CURDATE()) OR o.order_print = 1 GROUP BY o.order_id

上面的代碼拋出一個錯誤,

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR o.order_print = 1 GROUP BY o.order_id LIMIT 0, 25' at line 1

如果正在使用AND代替OR,代碼完美的作品。但我需要OR而不是AND

如何解決此錯誤。我做錯了什麼地方?

回答

4

你混了您的括號:

o.order_date BETWEEN DATE(DATE_ADD(o.order_date, INTERVAL -2 DAY) AND CURDATE()) 

應該是:

o.order_date BETWEEN DATE(DATE_ADD(o.order_date, INTERVAL -2 DAY)) AND CURDATE() 

BETWEEN需要兩個參數,並且不能有兩個參數加上括號。

像這樣:

o.order_date BETWEEN X AND Y 

不喜歡這樣的:

o.order_date BETWEEN (X AND Y) 
+0

三江源。效果很好。 –