亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學習啦 > 學習英語 > 專業(yè)英語 > 計算機英語 > 數(shù)據(jù)庫查詢exists的用法

      數(shù)據(jù)庫查詢exists的用法

      時間: 長思709 分享

      數(shù)據(jù)庫查詢exists的用法

        數(shù)據(jù)庫查詢exists的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數(shù)據(jù)庫查詢exists的用法的用法,希望對你們有用。

        數(shù)據(jù)庫查詢exists的用法的用法如下:

        有一個查詢?nèi)缦拢?/p>

        復制代碼 代碼如下:

        SELECT c.CustomerId, CompanyName

        FROM Customers c

        WHERE EXISTS(

        SELECT OrderID FROM Orders o

        WHERE o.CustomerID = cu.CustomerID)

        這里面的EXISTS是如何運作呢?子查詢返回的是OrderId字段,可是外面的查詢要找的是CustomerID和CompanyName字段,這兩個字段肯定不在OrderID里面啊,這是如何匹配的呢?

        EXISTS用于檢查子查詢是否至少會返回一行數(shù)據(jù),該子查詢實際上并不返回任何數(shù)據(jù),而是返回值True或False。

        EXISTS 指定一個子查詢,檢測行的存在。語法:EXISTS subquery。參數(shù) subquery 是一個受限的 SELECT 語句 (不允許有 COMPUTE 子句和 INTO 關鍵字)。結果類型為 Boolean,如果子查詢包含行,則返回 TRUE。

        在子查詢中使用 NULL 仍然返回結果集

        這個例子在子查詢中指定 NULL,并返回結果集,通過使用 EXISTS 仍取值為 TRUE。

        復制代碼 代碼如下:

        SELECT CategoryName

        FROM Categories

        WHERE EXISTS (SELECT NULL)

        ORDER BY CategoryName ASC

        比較使用 EXISTS 和 IN 的查詢

        這個例子比較了兩個語義類似的查詢。第一個查詢使用 EXISTS 而第二個查詢使用 IN。注意兩個查詢返回相同的信息。

        復制代碼 代碼如下:

        SELECT DISTINCT pub_name

        FROM publishers

        WHERE EXISTS

        (SELECT *

        FROM titles

        WHERE pub_id = publishers.pub_id

        AND type = \'business\')

        復制代碼 代碼如下:

        SELECT distinct pub_name

        FROM publishers

        WHERE pub_id IN

        (SELECT pub_id

        FROM titles

        WHERE type = \'business\')

        比較使用 EXISTS 和 = ANY 的查詢

        本示例顯示查找與出版商住在同一城市中的作者的兩種查詢方法:第一種方法使用 = ANY,第二種方法使用 EXISTS。注意這兩種方法返回相同的信息。

        復制代碼 代碼如下:

        SELECT au_lname, au_fname

        FROM authors

        WHERE exists

        (SELECT *

        FROM publishers

        WHERE authors.city = publishers.city)

        復制代碼 代碼如下:

        SELECT au_lname, au_fname

        FROM authors

        WHERE city = ANY

        (SELECT city

        FROM publishers)

        比較使用 EXISTS 和 IN 的查詢

        本示例所示查詢查找由位于以字母 B 開頭的城市中的任一出版商出版的書名:

        復制代碼 代碼如下:

        SELECT title

        FROM titles

        WHERE EXISTS

        (SELECT *

        FROM publishers

        WHERE pub_id = titles.pub_id

        AND city LIKE \'B%\')

        復制代碼 代碼如下:

        SELECT title

        FROM titles

        WHERE pub_id IN

        (SELECT pub_id

        FROM publishers

        WHERE city LIKE \'B%\')

        使用 NOT EXISTS

        NOT EXISTS 的作用與 EXISTS 正相反。如果子查詢沒有返回行,則滿足 NOT EXISTS 中的 WHERE 子句。本示例查找不出版商業(yè)書籍的出版商的名稱:

        復制代碼 代碼如下:

        SELECT pub_name

        FROM publishers

        WHERE NOT EXISTS

        (SELECT *

        FROM titles

        WHERE pub_id = publishers.pub_id

        AND type = \'business\')

        ORDER BY pub_name

        又比如以下 SQL 語句:

        復制代碼 代碼如下:

        select distinct 姓名 from xs

        where not exists (

        select * from kc

        where not exists (

        select * from xs_kc

        where 學號=xs.學號 and 課程號=kc.課程號

        )

        把最外層的查詢xs里的數(shù)據(jù)一行一行的做里層的子查詢。

        中間的 exists 語句只做出對上一層的返回 true 或 false,因為查詢的條件都在 where 學號=xs.學號 and 課程號=kc.課程號這句話里。每一個 exists 都會有一行值。它只是告訴一層,最外層的查詢條件在這里成立或都不成立,返回的時候值也一樣回返回上去。直到最高層的時候如果是 true(真)就返回到結果集。為 false(假)丟棄。

        復制代碼 代碼如下:

        where not exists

        select * from xs_kc

        where 學號=xs.學號 and 課程號=kc.課程號

        這個 exists 就是告訴上一層,這一行語句在我這里不成立。因為他不是最高層,所以還要繼續(xù)向上返回。

        select distinct 姓名 from xs where not exists (這里的 exists 語句收到上一個為 false 的值。他在判斷一下,結果就是為 true(成立),由于是最高層所以就會把這行的結果(這里指的是查詢條件)返回到結果集。

      543122