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 我想要的結(jié)果的條件是:1. LIBRARY_ID=1 或者 LIB_ID=1-
但是結(jié)果并非如此,出現(xiàn)了STATUS!=3的結(jié)果,但是卻匹配了 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)先級最高! 關(guān)系型運算符優(yōu)先級高到低為:not and or 問題的解決辦法是: 用()來改變執(zhí)行順序。。。 上面我所需要的SQL語句是這樣的 select * from LOAN_BACK_LIBRARY where STATUS=3 and (LIBRARY_ID=1 or LIB_ID=1 ) 這樣就是完美的答案了。。!
本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |