<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # MySQL 子查詢 > [http://zetcode.com/databases/mysqltutorial/subqueries/](http://zetcode.com/databases/mysqltutorial/subqueries/) 在 MySQL 教程的這一部分中,我們將提到 MySQL 中的子查詢。 子查詢是查詢中的查詢。 也稱為內部查詢或嵌套查詢。 子查詢可在允許表達式的任何地方使用。 它是一個用括號括起來的查詢表達式。 子查詢可以與`SELECT`,`INSERT`,`UPDATE`或`DELETE`語句一起使用。 有多種方法可以執行 SQL 任務。 許多子查詢可以用 SQL 連接代替。 SQL 連接通常更快。 在本章中,我們將使用以下表: ```sql mysql> SELECT * FROM Cars; +----+------------+--------+ | Id | Name | Cost | +----+------------+--------+ | 1 | Audi | 52642 | | 2 | Mercedes | 57127 | | 3 | Skoda | 9000 | | 4 | Volvo | 29000 | | 5 | Bentley | 350000 | | 6 | Citroen | 21000 | | 7 | Hummer | 41400 | | 8 | Volkswagen | 21600 | +----+------------+--------+ ``` `Cars`表中的數據。 ```sql mysql> SELECT * FROM Customers; SELECT * FROM Reservations; +------------+-------------+ | CustomerId | Name | +------------+-------------+ | 1 | Paul Novak | | 2 | Terry Neils | | 3 | Jack Fonda | | 4 | Tom Willis | +------------+-------------+ 4 rows in set (0.00 sec) +----+------------+------------+ | Id | CustomerId | Day | +----+------------+------------+ | 1 | 1 | 2009-11-22 | | 2 | 2 | 2009-11-28 | | 3 | 2 | 2009-11-29 | | 4 | 1 | 2009-11-29 | | 5 | 3 | 2009-12-02 | +----+------------+------------+ 5 rows in set (0.00 sec) ``` 我們總結一下`Customers`和`Reservations`表中的內容。 子查詢通常在具有某種關系的表上執行。 ### 帶有`INSERT`語句的子查詢 我們要創建`Cars`表的副本。 進入另一個稱為`Cars2`的表。 我們將為此創建一個子查詢。 ```sql mysql> CREATE TABLE Cars2(Id INT NOT NULL PRIMARY KEY, -> Name VARCHAR(50) NOT NULL, Cost INT NOT NULL); ``` 我們創建一個新的`Cars2`表,其列和數據類型與`Cars`表相同。 要了解如何創建表,我們可以使用`SHOW CREATE TABLE`語句。 ```sql mysql> INSERT INTO Cars2 SELECT * FROM Cars; ``` 這是一個簡單的子查詢。 我們將`Cars`表中的所有行插入`Cars2`表中。 ```sql mysql> SELECT * FROM Cars2; +----+------------+--------+ | Id | Name | Cost | +----+------------+--------+ | 1 | Audi | 52642 | | 2 | Mercedes | 57127 | | 3 | Skoda | 9000 | | 4 | Volvo | 29000 | | 5 | Bentley | 350000 | | 6 | Citroen | 21000 | | 7 | Hummer | 41400 | | 8 | Volkswagen | 21600 | +----+------------+--------+ ``` 數據已復制到新的`Cars2`表。 ### 標量子查詢 標量子查詢返回單個值。 ```sql mysql> SELECT Name FROM Customers WHERE -> CustomerId=(SELECT CustomerId FROM Reservations WHERE Id=5); +------------+ | Name | +------------+ | Jack Fonda | +------------+ ``` 括號中的查詢是子查詢。 它返回一個單個標量值。 然后,在外部查詢中使用返回的值。 在此標量子查詢中,我們從`Customers`表中返回客戶的名稱,該客戶的預訂在`Reservations`表中的 ID 等于 5。 ### 表子查詢 一個表子查詢返回一個零或更多行的結果表。 ```sql mysql> SELECT Name FROM Customers WHERE CustomerId IN -> (SELECT DISTINCT CustomerId FROM Reservations); +-------------+ | Name | +-------------+ | Paul Novak | | Terry Neils | | Jack Fonda | +-------------+ ``` 上面的查詢返回進行預訂的客戶的姓名。 內部查詢從`Reservations`表返回客戶 ID。 我們使用`IN`謂詞來選擇從內部選擇查詢返回其`CustomerId`的那些客戶名稱。 ```sql mysql> SELECT DISTINCT Name FROM Customers JOIN Reservations -> ON Customers.CustomerId=Reservations.CustomerId; +-------------+ | Name | +-------------+ | Paul Novak | | Terry Neils | | Jack Fonda | +-------------+ ``` 可以使用 SQL 連接重寫以前的子查詢。 ### 相關子查詢 相關子查詢是使用`WHERE`子句中外部查詢的值的子查詢。 對于外部查詢處理的每一行,子查詢都會被求值一次。 ```sql mysql> SELECT Name FROM Cars WHERE Cost < -> (SELECT AVG(Cost) FROM Cars); +------------+ | Name | +------------+ | Audi | | Mercedes | | Skoda | | Volvo | | Citroen | | Hummer | | Volkswagen | +------------+ ``` 在上面的相關子查詢中,我們返回價格低于表中所有汽車平均價格的所有汽車。 ### 具有`EXISTS`(不存在)的子查詢 如果子查詢返回任何值,則謂詞`EXISTS`返回`TRUE`和`NOT EXISTS` `FALSE`。 ```sql mysql> SELECT Name FROM Customers WHERE EXISTS -> (SELECT * FROM Reservations WHERE -> Customers.CustomerId=Reservations.CustomerId); +-------------+ | Name | +-------------+ | Paul Novak | | Terry Neils | | Jack Fonda | +-------------+ ``` 在上面的 SQL 語句中,我們選擇所有客戶的名稱,這些名稱在`Reservations`表中都有一個條目。 ```sql mysql> SELECT Name FROM Customers WHERE NOT EXISTS -> (SELECT * FROM Reservations WHERE -> Customers.CustomerId=Reservations.CustomerId); +------------+ | Name | +------------+ | Tom Willis | +------------+ ``` 在此查詢中,我們返回`Reservations`表中沒有條目的所有客戶。 這兩個 SQL 查詢都是相關查詢。 MySQL 教程的這一部分專門針對 MySQL 子查詢。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看