1. 程式人生 > >sql語句中同時使用AND 和 OR 關鍵字即兩者優先順序問題

sql語句中同時使用AND 和 OR 關鍵字即兩者優先順序問題

在ORACLE 資料庫中 通過AND 關鍵字 和 OR同時進行條件查詢時出現了意外的資料,我的sql是這樣的:
select red_book_type ,send_flag from red_mess_stat where red_book_type = ‘1’ or red_book_type = ‘2’ and send_flag = ‘0’
本意是查詢send_flag = ‘0’ 並且 red_book_type = '1’或者’2’的資料,結果查詢結果居然是

RED_BOOK_TYPE SEND_FLAG
1 0
1 2
1 1
1 0
1 4

分析:查詢結果中有1 4 這條記錄可知以上sql等同於
select red_book_type ,send_flag from red_mess_stat where red_book_type = ‘1’ or (red_book_type = ‘2’ and send_flag = ‘0’)
經過測試,加上括號的sql和不加括號sql查詢記錄數一致,可知:
結論: 優先順序 : AND > OR