SQL語句中 and or執行優先順序

2021-07-10 17:52:05 字數 580 閱讀 9827

首先,sql語句中not and or的執行優先順序從高到低依次為:not,and,or

舉例如下:

select * from table where a=1 and b=2 or c=3 and d=4;

我本來的意思是想實現,在table表中查詢的記錄集有兩部分組成,a=1並且d=4組成的記錄集1,再加上b=2或c=3組成的記錄集2,但是執行結果卻不然

按照上面寫的sql,執行順序是這樣的,

select * from table wherea=1 and b=2or c=3 and d=4;

sql按照or將where後面的條件分成兩部分分別執行,即先執行a=1 and b=2,然後再執行c=3 and d=4,然後將兩個記錄集通過or運算子合併組成記錄集

要想實現需求的結果,需要借助()改變執行順序,爭取的sql如下:

select * from table where a=1 and (b=2 or c=3) and d=4;

這樣sql先執行a=1,再執行(b=2 or c=3),再執行d=4,最後將三個記錄集合並成乙個記錄集

SQL語句中AND OR運算子優先順序

在sql語句中,or的優先順序比and的優先順序要低,比如 select from user where id in 1,2,3 and hobbies like fishing or hobbies like running 本想著找到乙個id是1,2,3中的乙個而且喜歡釣魚或者跑步的人,但是上面...

sql查詢語句中

sql查詢語句中select t.status,t.rowid from person t where t.status 2,此處查詢的是status不等於2的記錄,並過濾掉status為null的記錄。注意 此處不管status是integer型別還是long型別,都會過濾掉status為null...

SQL語句中 ( ) 含義

表示外連線。條件關聯時,一般只列出表中滿足連線條件的資料。如果條件的一邊出現 則可列出該表中在條件另一側的資料為空的那些記錄。比如兩個表 員工表和工資表。員工表中有總經理 a b c四條記錄,工資表中只有a b c三人的記錄。如果寫如下語句 select 姓名,工資 from 員工表,工資表 whe...