ALL、DISTINCT、DISTINCTROW、TOP 述詞

ALL、DISTINCT、DISTINCTROW、TOP 述詞

指定使用 SQL 查詢選取的記錄。

語法

選取 [全部|DISTINCT |DISTINCTROW |[TOP n [PERCENT]]]
FROM 表格

包含這些謂詞的 SELECT 語句由下列各部分組成:

部分

描述

ALL

假設您不包含其中一個謂詞。 Microsoft Access 資料庫引擎會選取符合 SQL 語句條件的所有記錄。 下列兩個範例是相等的,會從員工資料表返回所有記錄:

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;

DISTINCT

省略所選欄位中包含重復資料的記錄。 若要包含在查詢結果中,SELECT 語句中列出的每個欄位的值都必須是唯一的。 例如,在員工資料表中所列的數位員工可能都有相同的姓氏。 如果 LastName 欄位中有兩筆記錄包含 Smith,則下列 SQL 語句只會回條包含 Smith 的記錄:

SELECT DISTINCT LastName
FROM Employees;

如果您省略 DISTINCT,此查詢會同時會同時會回回 Smith 記錄。

如果 SELECT 子句包含多個欄位,則所有欄位的值組合必須是唯一的,以將特定記錄包含在結果中。

使用 DISTINCT 的查詢輸出無法更新,且不會反映其他使用者的後續變更。

DISTINCTROW

根據重複的記錄省略資料,而不只是重複的欄位。 例如,您可以建立一個查詢,以聯聯 CustomerID 欄位上的客戶與訂單資料表。 客戶資料表不包含重複的 CustomerID 欄位,但 Orders 資料表會包含,因為每位客戶可以有許多訂單。 下列 SQL 語句顯示如何使用 DISTINCTROW 製作至少擁有一份訂單,但不含這些訂單詳細資料的公司清單:

SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;

如果您省略 DISTINCTROW,此查詢會針對每一家公司產生多列訂單。

DISTINCTROW 只有在您從查詢中使用的部分資料表中選取欄位時 ,而非全部資料表時,才具有效果。 如果您的查詢只包含一個資料表,或如果您從所有資料表輸出欄位,則 DISTINCTROW 會被忽略。

TOP n [PERCENT]

會回到 ORDER BY 子句所指定範圍頂端或底部的特定數目記錄。 假設您要 1994 年級前 25 個學生的名稱:

SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;

如果您不包含 ORDER BY 子句,查詢會從學生資料表,從符合 WHERE 子句的 25 個記錄任意組。

TOP 謂詞不會在等值之間選擇。 在上一個範例中,如果第二十五個和第二十六個最高成績的分數平均值相同,查詢會返回 26 個記錄。

您也可以使用 PERCENT 保留字,來退回位於 ORDER BY 子句所指定範圍頂端或底部的特定百分比記錄。 假設您想要班級中倒數 10% 的學生,而不是前 25 名的學生:

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;

ASC 謂詞會指定底端值的返回。 TOP 後的值必須是未簽名的整數。

TOP 不會影響查詢是否可以更新。

table

從其中擷取記錄之資料表的名稱。



需要更多協助?

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

這項資訊有幫助嗎?

感謝您的意見反應!

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

×