1. 程式人生 > >SQL SERVER中的And與Or的優先級

SQL SERVER中的And與Or的優先級

但是 使用 條件 bsp png alt 技術 sele 城市

數據庫中有城市庫表,其中有國家、省、城市。

技術分享圖片

技術分享圖片

舉例:在廣東省內(包含廣東省本身),找出名稱為“廣州”的記錄

首先,廣東省內的條件是:ParentId = 2 Or Id =2

名稱為“廣州”的條件是:Name=‘廣州‘

合並後:

SELECT * FROM dbo.City
WHERE ParentId = 2 OR Id = 2 AND Name=‘廣州‘

但是結果如下:

技術分享圖片

出現上面結果的原因是因為Or的優先級比And低,上面的SQL等效於:

SELECT * FROM dbo.City
WHERE ParentId = 2 OR (Id = 2 AND Name=‘廣州‘)

而我們需要的是在第一條件滿足的情況下,同時滿足第二個條件的數據。

SELECT * FROM dbo.City
WHERE (ParentId = 2 OR Id = 2) AND Name=‘廣州‘

技術分享圖片

使用括號把多個小條件合並為一個大的條件。

SQL SERVER中的And與Or的優先級