sql指令碼中的優先順序(and or 和 括號)

2022-07-01 04:57:10 字數 1322 閱讀 9501

二月初三辛丑年 牛辛卯月 壬戌日

好多天沒更博了,為啥呢,因為我的需求上線了,然後又被bibibi了,其中各種心酸背鍋以及瑟瑟發抖。。。天吶

回來繼續說,今天乙個sql的修改:

需求是這樣的:在乙個日期範圍內(2020-03-01至2021-03-12)查詢人員型別為(「1003%」、「1004%」、「1006%」)的資料。

1、我原來錯誤的寫法為:

當我查詢出來的資料時間有2023年的,並且查詢時間特別特別慢

-- 這段指令碼查詢出來的資料和時間沒有什麼關係的

select

m.no, m.calldate, m.persontype

from

amain m

where m.calldate >= date '

202-03-01

'and m.calldate< date'

2021-03-12

'and m.persontype like

'1003%

'or m.persontype like

'1004%

'or m.persontype like

'1006%

' ;

-- 即當出現:

-- condition1 and condition2  or   condition3 

-- 其運算實際上是等價於:(condition1 and  condition2) or condition3    //先運算and  再運算or

--運算順序為 and > or

2、正確的寫法為:

select

m.no, m.calldate, m.persontype

from

amain m

where m.calldate >= date '

202-03-01

'and m.calldate< date'

2021-03-12

'and (m.persontype like

'1003%

'or m.persontype like

'1004%

'or m.persontype like

'1006%

' );

-- 加入了括號之後就能查出正確的資料了

-- condition1 and (condition2  or   condition3)

-- 其運算實際上先執行了 括號裡面的 or 再執行了 括號外的 and

-- 運算順序為 () > and

綜合上述兩種情況,就可得到:運算順序為 () > and >or.

SQL中 and or優先順序問題

剛剛在專案中遇到這樣乙個問題,sql語句如下 select from loan back library where library id 1 or lib id 1 and status 3 我想要的結果的條件是 1.library id 1 或者 lib id 1 2.status 3 但是結果...

SQL中 and or優先順序問題

sql中 and or優先順序問題 剛剛在專案中遇到這樣乙個問題,sql語句如下 select from loan back library where library id 1 or lib id 1 and status 3 我想要的結果的條件是 1.library id 1 或者 lib id...

SQL中 and or優先順序問題

原文 剛剛在專案中遇到這樣乙個問題,sql語句如下 select from loan back library where library id 1 or lib id 1 and status 3 我想要的結果的條件是 1.library id 1 或者 lib id 1 2.status 3 但...