以指定字段为依据,对查询产生的记录进行升序或降序排序。
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 支持和反馈,获取有关如何接收支持和提供反馈的指南。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback。
提交和查看相关反馈