排序指定欄位中查詢的結果記錄,或將欄位以遞增或遞減排序。
SELECT
fieldlist
FROM
table
WHERE
selectcriteria
[ORDER BY
field1
[ASC |DESC ][,
field2
[ASC |DESC ]][, ...]]]
包含 ORDER BY 子句的 SELECT 陳述式有以下部分:
fieldlist
要與任何欄位名稱別名、
SQL 彙總函數
、選取述詞 (
ALL、DISTINCT、DISTINCTROW 或 TOP
) 或其他
SELECT
陳述式選項一起擷取之一個或多個欄位的名稱。
table
擷取記錄來源的資料表名稱。 如需詳細資訊,請參閱
FROM
子句。
selectcriteria
選取準則。 若陳述式包含
WHERE
子句,則 Microsoft Access 資料庫引擎會在套用 WHERE 條件到記錄後,將值排序。
field1
、
field2
排序記錄的欄位名稱。
ORDER BY 是選擇性的。 但若希望資料以排序的方式顯示,則必須使用 ORDER BY。
預設的排序順序是遞增的 (A 到 Z、0 到 9)。 下列範例皆以員工姓名的姓氏來排序:
SELECT LastName, FirstName
FROM Employees
ORDER BY LastName;
SELECT LastName, FirstName
FROM Employees
ORDER BY LastName ASC;
若要遞減排序 (Z 到 A、9 到 0),請在要遞減排序的每一個欄位末端加上 DESC 保留字詞。 下列範例選取薪資,並以遞減順序來排序:
SELECT LastName, Salary
FROM Employees
ORDER BY Salary DESC, LastName;
若指定在 ORDER BY 子句中包含備忘或 OLE 物件資料的欄位,則會發生錯誤。 Microsoft Jet 資料庫引擎不會排序這些資料型別的欄位。
ORDER BY 通常是 SQL 陳述式的最後一個項目。
可以在 ORDER BY 子句中包含其他欄位。 記錄會先排序在 ORDER BY 後的第一個欄位。 欄位值相同的記錄,會接著排序在第二個欄位,以此類推。
下列範例中顯示的 SQL 陳述式會使用 ORDER BY 子句,根據姓氏以遞減順序 (Z-A) 排序記錄。 此範例會呼叫 EnumFields 程序,您可以在 SELECT 陳述式範例中找到該程序。
Sub OrderByX()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Select the last name and first name values from
' the Employees table, and sort them in descending
' order.
Set rst = dbs.OpenRecordset("SELECT LastName, " _
& "FirstName FROM Employees " _
& "ORDER BY LastName DESC;")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print recordset contents.
EnumFields rst, 12
dbs.Close
End Sub
關於參與者
UtterAccess社群的所提供的連結。
UtterAccess 是最早的 Microsoft Access Wiki 和說明論壇。
存取開發人員論壇
在 support.office.com 上存取說明
存取 UtterAccess 上的論壇
存取開發人員和 VBA 程式設計說明中心 (FMS)
存取 StackOverflow 上的文章
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。