使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。
ALL、DISTINCT、DISTINCTROW、TOP 述詞

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

語法

SELECT [ALL |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

根據整筆重複的記錄來省略數據,而不只是省略重複欄位。 例如,您可以建立一個查詢來聯結 [客戶標識符] 字段上的 [客戶] 和 [訂單] 數據表。 [客戶] 數據表不包含重複的 [客戶標識符] 字段,但 [訂單] 數據表會這麼做,因為每個客戶可以有許多訂單。 下列 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

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



需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×