SQL中 and or優(yōu)先級(jí)問(wèn)題 |
發(fā)布時(shí)間: 2012/9/3 17:21:34 |
剛剛在項(xiàng)目中遇到這樣一個(gè)問(wèn)題,SQL語(yǔ)句如下: 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 為什么呢 原來(lái)這個(gè)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)問(wèn)題了: where 后面如果有and,or的條件,則or自動(dòng)會(huì)把左右的查詢(xún)條件分開(kāi),即先執(zhí)行and,再執(zhí)行or。原因就是:and的執(zhí)行優(yōu)先級(jí)最高! 關(guān)系型運(yùn)算符優(yōu)先級(jí)高到低為:not and or 問(wèn)題的解決辦法是: 用()來(lái)改變執(zhí)行順序。。! 上面我所需要的SQL語(yǔ)句是這樣的 select * from LOAN_BACK_LIBRARY where STATUS=3 and (LIBRARY_ID=1 or LIB_ID=1 ) 這樣就是完美的答案了。。。
本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |