设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1682|回复: 4
打印 上一主题 下一主题

[与其它组件] 不重复记录的统计

[复制链接]
跳转到指定楼层
1#
发表于 2006-8-4 00:18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问怎么统计表里不重复的记录数呀
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-8-4 00:28:00 | 只看该作者
DISTINCT
3#
 楼主| 发表于 2006-8-4 05:21:00 | 只看该作者
谢谢版主,但是我还是不会用这个,能说明一下吗?我只想统计不重复的记录数量。
4#
发表于 2006-8-4 05:26:00 | 只看该作者
ALL、DISTINCT、DISTINCTROW、TOP 谓词


指定使用 [url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\2052\acmain11.chm::/html/jetglossary.htm#idh_dadefsqlstatement]SQL[/url] 查询选择的记录。


语法


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


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











部分


说明





ALL


作为不包括谓词处理。[url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\2052\acmain11.chm::/html/jetglossary.htm#idh_dadefmsjetdatabaseengine]Microsoft Jet 数据库引擎[/url]会选择符合[url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\2052\acmain11.chm::/html/jetglossary.htm#idh_dadefsqlstatement] SQL 语句[/url]中的条件的所有记录。以下两个示例是等价的,它们都返回 Employees 表中的所有记录:


  1. SELECT ALL *
    FROM Employees
    ORDER BY EmployeeID;
复制代码


  1. SELECT *
    FROM Employees
    ORDER BY EmployeeID;
复制代码





DISTINCT


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


  1. SELECT DISTINCT
    LastName
    FROM Employees;
复制代码


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


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


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





DISTINCTROW


忽略整个重复记录的数据,而不仅仅是重复的字段。例如,创建一个联接顾客表和订单表的 CustomerID 字段的查询。顾客表不包含重复的 CustomerID 字段,但是订单表包含重复的 CustomerID 字段,因为每一个顾客可以有多个订单。下面的 SQL 语句显示了如何使用 DISTINCTROW 产生一个至少有一个订单但没有这些订单任何细节的公司列表:


  1. 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 名学生的名字:


  1. 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 名学生:


  1. SELECT TOP 10 PERCENT
    FirstName, LastName
    FROM Students
    WHERE GraduationYear = 1994
    ORDER BY GradePointAverage ASC;
复制代码


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


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





table


从中检索记录的表名。
5#
发表于 2006-8-4 05:29:00 | 只看该作者
理解谓词,像中文中的谓语一样,位于主语后面。DISTINCT是很有用的应该关键词。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-10 07:40 , Processed in 0.089924 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表