国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學(xué)習(xí)啦 > 學(xué)習(xí)英語(yǔ) > 專業(yè)英語(yǔ) > 計(jì)算機(jī)英語(yǔ) > 數(shù)據(jù)庫(kù)查詢exists的用法

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

    時(shí)間: 長(zhǎng)思709 分享

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

      數(shù)據(jù)庫(kù)查詢exists的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下數(shù)據(jù)庫(kù)查詢exists的用法的用法,希望對(duì)你們有用。

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

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

      復(fù)制代碼 代碼如下:

      SELECT c.CustomerId, CompanyName

      FROM Customers c

      WHERE EXISTS(

      SELECT OrderID FROM Orders o

      WHERE o.CustomerID = cu.CustomerID)

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

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

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

      在子查詢中使用 NULL 仍然返回結(jié)果集

      這個(gè)例子在子查詢中指定 NULL,并返回結(jié)果集,通過(guò)使用 EXISTS 仍取值為 TRUE。

      復(fù)制代碼 代碼如下:

      SELECT CategoryName

      FROM Categories

      WHERE EXISTS (SELECT NULL)

      ORDER BY CategoryName ASC

      比較使用 EXISTS 和 IN 的查詢

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

      復(fù)制代碼 代碼如下:

      SELECT DISTINCT pub_name

      FROM publishers

      WHERE EXISTS

      (SELECT *

      FROM titles

      WHERE pub_id = publishers.pub_id

      AND type = \'business\')

      復(fù)制代碼 代碼如下:

      SELECT distinct pub_name

      FROM publishers

      WHERE pub_id IN

      (SELECT pub_id

      FROM titles

      WHERE type = \'business\')

      比較使用 EXISTS 和 = ANY 的查詢

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

      復(fù)制代碼 代碼如下:

      SELECT au_lname, au_fname

      FROM authors

      WHERE exists

      (SELECT *

      FROM publishers

      WHERE authors.city = publishers.city)

      復(fù)制代碼 代碼如下:

      SELECT au_lname, au_fname

      FROM authors

      WHERE city = ANY

      (SELECT city

      FROM publishers)

      比較使用 EXISTS 和 IN 的查詢

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

      復(fù)制代碼 代碼如下:

      SELECT title

      FROM titles

      WHERE EXISTS

      (SELECT *

      FROM publishers

      WHERE pub_id = titles.pub_id

      AND city LIKE \'B%\')

      復(fù)制代碼 代碼如下:

      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è)書籍的出版商的名稱:

      復(fù)制代碼 代碼如下:

      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 語(yǔ)句:

      復(fù)制代碼 代碼如下:

      select distinct 姓名 from xs

      where not exists (

      select * from kc

      where not exists (

      select * from xs_kc

      where 學(xué)號(hào)=xs.學(xué)號(hào) and 課程號(hào)=kc.課程號(hào)

      )

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

      中間的 exists 語(yǔ)句只做出對(duì)上一層的返回 true 或 false,因?yàn)椴樵兊臈l件都在 where 學(xué)號(hào)=xs.學(xué)號(hào) and 課程號(hào)=kc.課程號(hào)這句話里。每一個(gè) exists 都會(huì)有一行值。它只是告訴一層,最外層的查詢條件在這里成立或都不成立,返回的時(shí)候值也一樣回返回上去。直到最高層的時(shí)候如果是 true(真)就返回到結(jié)果集。為 false(假)丟棄。

      復(fù)制代碼 代碼如下:

      where not exists

      select * from xs_kc

      where 學(xué)號(hào)=xs.學(xué)號(hào) and 課程號(hào)=kc.課程號(hào)

      這個(gè) exists 就是告訴上一層,這一行語(yǔ)句在我這里不成立。因?yàn)樗皇亲罡邔?,所以還要繼續(xù)向上返回。

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

    543122