天天看點

SQL中的Exists 用法解釋

exists的執行個體解析

現有兩個表

a:

SQL中的Exists 用法解釋

b:

SQL中的Exists 用法解釋

現有sql語句如下

執行結果如下:

SQL中的Exists 用法解釋

含義解析:exists 的意思是用于檢查子查詢是否至少會傳回一行資料,該子查詢實際上并不傳回任何資料,而是傳回值True或False

EXISTS(包括 NOT EXISTS )子句的傳回值是一個BOOL值。 EXISTS内部有一個子查詢語句(SELECT … FROM…), 我将其稱為EXIST的内查詢語句。其内查詢語句傳回一個結果集。 EXISTS子句根據其内查詢語句的結果集空或者非空,傳回一個布爾值。

意思就是,将外查詢表的每一行,代入内查詢作為檢驗,如果内查詢傳回的結果取非空值,則EXISTS子句傳回TRUE,那麼帶入内查詢作檢驗的這一行資料,便會作為結果顯示出來,反之則不顯示

過程分析:首先外查詢會将a變中的第一行資料帶入exists的内查詢中,通過主鍵關聯檢測是不是有資料能關聯住,如果有傳回true,并将a表中的第一行傳回到前台,例如,a表中第一行是(1,張三),他會帶入到b表中,通過id =1檢測到能與b關聯(因為b表中作主鍵的b_id也有值1),這樣就會傳回結果true,語句便會将這一行傳回給前台,并不會在向下繼續監測。然後在将a表第二行帶入b表。然後第三行,,,,如果作為主鍵id中沒有能找到b表b_id做關聯的,那就傳回false。sql不會将a表中的這行資料顯示出來

not exists 與exists 相反

————————————————

版權聲明:本文為CSDN部落客「-你真好看-」的原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/enbaoIT/article/details/103468779

sql