Access 2003完整教程:ALL、DISTINCT、DISTINCTROW、TOP 谓词

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

语法

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

一个包含这些谓词的 SELECT 语句具有以下部分:

部分说明
ALL作为不包括谓词处理。Microsoft Jet 数据库引擎会选择符合SQL 语句中的条件的所有记录。以下两个示例是等价的,它们都返回 Employees 表中的所有记录:

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;

SELECT *
FROM Employees
ORDER BY EmployeeID;

DISTINCT忽略在选定字段中包含重复数据的记录。若要包括在查询的结果中,在 SELECT 语句中所列出的每个字段的值必须是唯一的。例如,Employees 表中列出的一些雇员可能有相同的名字 (LastName)。如果在 LastName 字段中有两个包含 Smith 的记录,则下面的 SQL 语句只返回一个包含 Smith 的记录:

SELECT DISTINCT
LastName
FROM Employees;

如果忽略了 DISTINCT,这个查询将返回两个 Smith 记录。

如果 SELECT 子句包含多个字段,若要在结果中包含给定的记录,那么所有字段的值的组合必须是唯一的。

使用 DISTINCT 查询的输出结果是不可更新的,它不会影响其他用户所做的后续更改。

DISTINCTROW忽略整个重复记录的数据,而不仅仅是重复的字段。例如,创建一个联接顾客表和订单表的 CustomerID 字段的查询。顾客表不包含重复的 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 = 1994
ORDER BY GradePointAverage DESC;

如果没有包含 ORDER BY 子句,查询将会从 Students 表中返回一个满足 WHERE 子句的包含 25 个记录的任意集合。

TOP 谓词不会在两个相等的值中进行选择。在上面的示例中,如果第 25 和第 26 名的年级平均分相同,那么查询将会返回 26 个记录。

也可以使用 PERCENT 保留字返回出现在 ORDER BY 子句指定的起始和结束范围内的某个百分比数量的记录。假如,您希望返回该年级中最后名次的百分之十个学生,而不是前 25 名学生:

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 1994
ORDER BY GradePointAverage ASC;

ASC 谓词指定返回最小值。TOP 之后的值必须是一个无符号整数

TOP 谓词不影响查询是否可更新。

table从中检索记录的表名。

请参阅
FROM 子句 SELECT 语句

上页:Access 2003完整教程:ADD USER 语句 下页:Access 2003完整教程:ALTER TABLE 语句

Access 2003完整教程:ALL、DISTINCT、DISTINCTROW、TOP 谓词

Access 2003完整教程:ALTER TABLE 语句Access 2003完整教程:ALTER USER 或 DATABASE 语句
Access 2003完整教程:Avg 函数Access 2003完整教程:Between...And 运算符
Access 2003完整教程:使用 SQL 函数计算字段Access 2003完整教程:CONSTRAINT 子句
Access 2003完整教程:Count 函数Access 2003完整教程:CREATE INDEX 语句
Access 2003完整教程:CREATE PROCEDURE 语句Access 2003完整教程:CREATE TABLE 语句
Access 2003完整教程:CREATE USER 或 GROUP 语句Access 2003完整教程:CREATE VIEW 语句
Access 2003完整教程:DELETE 语句Access 2003完整教程:DROP 语句
Access 2003完整教程:DROP USER 或 GROUP 语句Access 2003完整教程:等价的 ANSI SQL 数据类型
Access 2003完整教程:EXECUTE 语句Access 2003完整教程:SQL 表达式
Access 2003完整教程:First、Last 函数Access 2003完整教程:FROM 子句
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号