最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于SQL語句中的AND和OR執(zhí)行順序遇到的問題

 更新時間:2019年05月22日 09:55:40   作者:alwayssmile21  
在SQL語句中的AND和OR執(zhí)行順序中我們經(jīng)常會遇到一些問題,下面有簡單的解決方法,小編來和大家一起來看看

問題

昨天在寫數(shù)據(jù)庫SQL的時候遇到一個問題。問題的根結(jié)在SQL語句的AND和OR關(guān)鍵字的執(zhí)行優(yōu)先級問題。下面就針對這個問題進(jìn)行一下測試。

場景

1、有一張學(xué)生表Student,表字段包括Id(用戶主鍵)、Name(用戶名)、Grade(年級)、Class(班級)、Sex(性別)。如下:

表結(jié)構(gòu)

2、在表中導(dǎo)入十條測試數(shù)據(jù),如下:

表數(shù)據(jù)

3、現(xiàn)需要查詢出性別為女的1年級女學(xué)生,或者性別為女的2班級女學(xué)生。SQL語句如下:
    select * from student where sex='女' and grade=1 or class=2
但是該sql查詢出來的結(jié)果并不符合要求,執(zhí)行結(jié)果如下:

執(zhí)行結(jié)果

執(zhí)行的結(jié)果中還查詢出了班級為2的男學(xué)生,顯然結(jié)果是不正確的。

4、修改下SQL語句,添加上括號。如下:

select * from student where sex='女' and (grade=1 or class=2)

該sql查詢出來的結(jié)果符合要求

分析

從上面的場景中,問題的關(guān)鍵就在于AND和OR的執(zhí)行順序問題。
查閱資料,關(guān)系型運算符優(yōu)先級高到低為:NOT >AND >OR
如果where 后面有OR條件的話,則OR自動會把左右的查詢條件分開。
就如上面場景中的第一條語句,他的查詢條件分為兩部分(或):

1、sex='女' and grade=1
2、 class=2

這也就是查詢出1年級的女學(xué)生,2班級的學(xué)生。不符合最初查詢的要求。
那么解決辦法就是使用括號區(qū)分執(zhí)行的順序
就如上面場景的第二條語句,查詢條件分為兩部分(并):

1、 sex='女' 
2、 (grade=1 or class=2)

相關(guān)文章

最新評論

沁水县| 阳原县| 望谟县| 肥东县| 逊克县| 石屏县| 稻城县| 宣恩县| 凌云县| 沁阳市| 荔波县| 龙游县| 郸城县| 沙田区| 广南县| 达孜县| 连山| 平舆县| 慈利县| 长寿区| 始兴县| 永胜县| 马关县| 北流市| 樟树市| 和龙市| 蕉岭县| 泰兴市| 资兴市| 平泉县| 曲靖市| 昌邑市| 邳州市| 称多县| 余姚市| 名山县| 上虞市| 屏山县| 北宁市| 义马市| 靖远县|