排序指定欄位中查詢的結果記錄,或將欄位以遞增或遞減排序。

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 支援與意見反應