ACCESS中如何实现提取记录总数的方法

ACCESS中如何实现提取记录总数的方法,第1张

随机提取access数据库记录的几种方法

前天有人在QQ群里问如何从Access数据库里随机抽取几条记录。这个问题如果放在SQL Server上就比较容易解决,比如随机抽取10条记录,采用的T-SQL语句是:

Select Top 10 From [SomeTable] Order By NewID()

可以获得很好的效果,但是对于Access数据库而言就没有这么方便了。

在以前我也遇到过这样的问题,当时写一篇整理文字来讨论这个问题。这两天找到了这篇文字重新整理一下放在这里。采用的Access数据库。总结了几种办法

方法一:有人用如下代码以记录总数为极大值来首先提取出指定数量的随机数,然后以这些随机数做为记录ID。

VBScript代码:

dim n,j

dim su()

dim a,b,k

b=myrsRecordCount

Randomize

redim su(index_N)

su(1)=Int((b Rnd) + 1)

for n=2 to index_N

a=Int((b Rnd) + 1)

for j=1 to n

do while a=su(j)

a=Int((b Rnd) + 1)

j=1

loop

next

su(n)=a

next

这种方式有一些问题,就是当主键ID不连续的话,有可能某些随机数不存在ID序列当中。另外ID的最大值与总的记录值不一定相等,这样有些记录ID会永远被忽略。

方法二:有人采用一条SQL语句解决此问题

select top 5 From Table1 order by Rnd()5

这条语句可以随机从Access数据库中摄取5条记录。但是实际 *** 作中,其生成的记录结果是固定的,失去了随机摄取记录的意义。

方法三:有这样一种方法。

利用随机数生成主键的记录ID

yourstr="134612"

然后用

sql="select top 10 form yourdb where instr(''&id&'','"&yourstr&"')<>0"

yourstr

可以生成随机数多一点大于所限定抽取的随机数为好。这样可以排除记录不足的情况。

此方法也不太好,而且采用InStr语句,不能利用索引优化,对资源有一定的消耗。

方法四:

代码实现如下:

<%

n=10 ''取任意10条记录

set rs = serverCreateObject ("adodbrecordset")

sql = "select from table"

rsopen sql,conn,1,1

count=rsrecordcount ''记录总数

IF Count<>empty Then

Randomize

for i = 1 to n ''循环n次

num=Fix(Rndcount) ''num便是随机产生的记录行数,用Fix(),使其不会大于count值。

rsmove num ''移到改随机行

Responsewrite rs(0) ''出该条记录

rsmovefirst ''别忘了再把指针移到第一条

next

End IF

rsclose

set rs = nothing

%>

这个方式感觉上比较好些。

方法五:

此方法应该算是比较接近于SQL Server的用法了。

代码:

randomize '得到随机的种子,9999根据你的记录数量级调整,具体调到你出来的记录集随机序列均化

seed=round(rnd9999)

'以下两种方法都可以,id是主键自增字段

Sql="select id,分值 from table where order by rnd(-"&seed&"-id-"&seed&")"

……

如果还有更好的方法也可以提出来。

得到一个表的记录总数 常用的作法就是:

以下为引用的内容

select count() from 表名;

这种做法没做 我这儿主要说的是效率问题 当一个数据表的记录数不是太多时 这样得到记录总数的效率不是问题 但试想 如果一个表的记录总数超过几百万或者几千万 要再用上面的Sql语句得到表的记录总数 速度会慢得让人难以忍受 有人会说了 可以一表上建立聚簇集索引呀 不错 若在表的某个字段上建立聚簇索引 第一次执行该语句的时间和没有索引的时间差不多 之后执行上述语句 速度很快 但如果要经常做增删改 *** 作 建立聚簇索引不是一个明智的做法 将会极大的影响增删改的速度 得到一个数据表的记录总数经常用在以下几个方面

一 做数据分页时要得到总记录数

二 判断数据表的记录数是否过大 是否需要备份数据

三 用户要求等等

说了这么多 那么到底如何快速得到一个数据表的记录总数呢答案是 利用SqlServer数据库的系统视图sys sysindexes

在MS SQL Serverl数据库中 每个数据表都在sys sysindexes系统表中拥有至少一条记录 记录中的rows 或rowcnt字段会定时记录表的记录总数 注意是定时 这说明了用这个方法得到的总记录数不是一个精确值 原因是MsSQL并不是实时更新该字段的值 而是定时更新 但从实践来看该值和精确值误差不大 如果你希望快速粗略估算表的记录总数 建议你采用该方法

SQL Server帮助文件对sys sysindexes系统视图的说明为 当前数据库中的每个索引和表在表中各对应一行 说了这么多 直接动手 *** 作便一目了然

打开SQL Server 执行如下语句:

以下为引用的内容

useAdventureWorks

select id object_name(id) as tableName indid rows rowcnt

from sys sysindexes where indid in( )

lishixinzhi/Article/program/SQLServer/201311/22343

1、首先,我们打开excel软件,输入一些数据供以后使用。

2、接下来,我们在单元格中输入Countif函数,设置数据区域,并选择要计数的内容项。

3、输入公式后,按enter键获取统计数据。

4、如果我们想计算多个内容项的数量,我们需要将它们放在大括号中。

5、写完公式并进入汽车后,我们可以计算统计项目的数量并得到相同的数字。

以上就是关于ACCESS中如何实现提取记录总数的方法全部的内容,包括:ACCESS中如何实现提取记录总数的方法、SQL Server得到表记录总数的另类方法、Excel中如何统计一个项目的数量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9819072.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存