使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。
ALL、DISTINCT、DISTINCTROW、TOP 谓词

指定使用 SQL 查询选择的记录。

语法

SELECT [ALL |DISTINCT |DISTINCTROW |[TOP n [PERCENT]]]
FROM

包含这些谓词的 SELECT 语句包含以下部分:

部分

说明

ALL

如果不包含谓词之一,则假定为 。 Microsoft Access 数据库引擎选择满足 SQL 语句中条件的所有记录。 以下两个示例等效,并返回 Employees 表中的所有记录:

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;

DISTINCT

省略所选字段中包含重复数据的记录。 要包含在查询结果中,SELECT 语句中列出的每个字段的值必须是唯一的。 例如,在 Employees 表中列出的多个员工可能具有相同的姓氏。 如果两条记录在 LastName 字段中包含 Smith,则以下 SQL 语句仅返回一条包含 Smith 的记录:

SELECT DISTINCT LastName
FROM Employees;

如果省略 DISTINCT,此查询将返回两条 Smith 记录。

如果 SELECT 子句包含多个字段,则所有字段中的值组合必须是唯一的,才能将给定记录包含在结果中。

使用 DISTINCT 的查询的输出不可更新,并且不会反映其他用户的后续更改。

DISTINCTROW

省略基于整个重复记录的数据,而不仅仅是重复字段。 例如,可以创建一个查询,用于联接 CustomerID 字段的 Customers 和 Orders 表。 “客户”表不包含重复的 CustomerID 字段,但“订单”表会这样,因为每个客户可以有多个订单。 以下 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 子句,查询将从 Students 表中返回一组任意的 25 条记录,这些记录满足 WHERE 子句。

TOP 谓词不选择相等值。 在前面的示例中,如果第 25 个和 26 个最高年级分数的平均值相同,则查询将返回 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 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×