ALL、DISTINCT、DISTINCTROW、TOP 谓词

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

省略基于整个重复记录的数据,而不只是重复字段。 例如,可以创建一个查询,用于联接 CustomerID 字段上的"客户"和"订单"表。 "客户"表不包含重复的 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 子句,查询将返回学生表中满足 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

从中检索记录的表的名称。



需要更多帮助?

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×