SQL中的Exists 用法解釋

2021-10-03 22:38:00 字數 901 閱讀 7472

exists的例項解析

現有兩個表

現有sql語句如下

select

*from a where

exists

(select

1from b where b.b_id = a.id)

;

含**析: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表中的這行資料顯示出來

SQL中EXISTS的用法

比如在northwind資料庫中有乙個查詢為 select c.customerid,companyname from customers c where exists select orderid from orders o where o.customerid c.customerid 這裡面的...

SQL中EXISTS的用法

比如在northwind資料庫中有乙個查詢為 select c.customerid,companyname from customers c where exists select orderid from orders o where o.customerid c.customerid 這裡面的...

SQL中EXISTS的用法

比如在northwind資料庫中有乙個查詢為 select c.customerid,companyname fromcustomers c where exists select orderid fromorders owhereo.customerid c.customerid 這裡面的exis...