SQL中 and or優(yōu)先級問題 |
發(fā)布時間: 2012/9/3 17:21:34 |
剛剛在項目中遇到這樣一個問題,SQL語句如下: select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 and STATUS=3 我想要的結果的條件是:1. LIBRARY_ID=1 或者 LIB_ID=1-
但是結果并非如此,出現(xiàn)了STATUS!=3的結果,但是卻匹配了 LIBRARY_ID=1 or LIB_ID=1 為什么呢 原來這個SQL的執(zhí)行是這樣的: select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 and STATUS=3 修改為: select * from LOAN_BACK_LIBRARY where STATUS=3 and LIBRARY_ID=1 or LIB_ID=1 依然不正確 呵呵,發(fā)現(xiàn)問題了: where 后面如果有and,or的條件,則or自動會把左右的查詢條件分開,即先執(zhí)行and,再執(zhí)行or。原因就是:and的執(zhí)行優(yōu)先級最高! 關系型運算符優(yōu)先級高到低為:not and or 問題的解決辦法是: 用()來改變執(zhí)行順序。。! 上面我所需要的SQL語句是這樣的 select * from LOAN_BACK_LIBRARY where STATUS=3 and (LIBRARY_ID=1 or LIB_ID=1 ) 這樣就是完美的答案了。。!
本文出自:億恩科技【www.itdijia.com】 |