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

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



Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×