SQL 子查詢

附註: 我們想要以您的語言,用最快的速度為您提供最新的說明內容。本頁面是經由自動翻譯而成,因此文中可能有文法錯誤或不準確之處。讓這些內容對您有所幫助是我們的目的。希望您能在本頁底部告訴我們這項資訊是否有幫助。此為英文文章出處,以供參考。

將子查詢用為 SELECT 陳述式巢狀嵌入選取],選取 …將,插入...成、 刪除或 UPDATE 陳述式或內另一個子查詢。

語法

若要建立子查詢,您可以使用三種語法:

比較[任何 |所有 |某些] (例如

運算式[不]在 (例如

[不]EXISTS (例如

將子查詢用包含下列部分:

部分

描述

比較

運算式和比較運算子比較子查詢的結果運算式。

expression

搜尋結果集中的子查詢的運算式。

sqlstatement

SELECT 陳述式,為任何其他 SELECT 陳述式中追蹤相同的格式與規則。 它必須以括號括住。


備註

您可以使用子查詢,而不是在欄位清單中的 SELECT 陳述式或運算式的位置,或 HAVING 子句中。 在子查詢,您可以使用 [SELECT 陳述式,提供一或多個特定值中的位置,或有子句運算式評估的一組。

使用的所有或部分述詞的同義字,擷取符合比較子查詢擷取任何記錄的主要查詢記錄。 下列範例會傳回所有產品的單價大於售出 25%以上的折扣產品:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

您可以使用所有述詞只擷取主查詢中的滿足比較子查詢所擷取的所有記錄。 如果您有變更任何全部在先前範例中,則查詢會傳回其單價大於的所有產品的銷售量在折扣的 25%以上的產品。 這是限制更多。

使用 IN 述詞擷取主要查詢的一些記錄子查詢中的包含相等值中的記錄。 下列範例會傳回 25%以上的折扣的所有產品:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

相反地,您也可以只擷取的子查詢中的沒有記錄包含相等值的主要查詢中使用 NOT IN。

使用 EXISTS 述詞 (與選用不保留 word) true/false 比較,以判斷子查詢是否傳回任何記錄中。

您也可以使用子查詢中的資料表名稱別名來參照子查詢外 FROM 子句中所列的資料表。 下列範例會傳回薪資是等於或大於平均薪資有相同的工作標題的所有員工的員工的名稱。 [員工] 資料表提供 「 T1 」 的別名:

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

在上述範例中,另存新檔保留字是選擇性的。

交叉資料表查詢中允許某些子,特別是,如述詞 (WHERE 子句中)。 交叉資料表查詢中不允許子查詢做為輸出 (選取清單中)。



增進您的 Office 技巧
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×