问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql server 2000,希望随机读取数据

发布网友 发布时间:2022-04-12 00:23

我来回答

3个回答

懂视网 时间:2022-04-12 04:44

SqlServer本身并没有提供随机读取记录的功能,但我们可以通过一些方法来实现这个目的。本文介绍了其中几种方法并比较了各自的优劣。 方法一: 直接通过Sql语句实现,如: select top n * from tableA order by newid () 这是最简单的方法,通过调用SqlServer

SqlServer本身并没有提供随机读取记录的功能,但我们可以通过一些方法来实现这个目的。本文介绍了其中几种方法并比较了各自的优劣。

方法一:
直接通过Sql语句实现,如:

select top n *
from tableA
order by newid()

这是最简单的方法,通过调用SqlServer的newid()函数(产生GUID—全局唯一标志符)来产生随机记录。
采用这种方法时,需要将表中所有记录与newid()生成的值进行比较从而进行排序。因此,如果表中的记录较多,操作会非常缓慢。

方法二:
假设表中有一个自增长主键,增量为1。这时我们可以这样处理,取出主键的边界值(最大值和最小值),然后通过一个算法得到介于(包括)两个边界之间的随机值,最后按照这个值取出对应记录。下面是C#的例子:

//生成随机数
Random rand = new Random();
int num = rand.Next(MinVal,MaxVal + 1); //MinVal为主键的最小值,MaxVal为主键的最大值

//读取记录的Sql字符串
string SqlStr = "select * from tableA where PK = " + num;


这种方法较前一种方法的操作速度有了较大提高(特别是在大数据量的情况下)。但只有当主键值是连续的,中间没有断开的情况,并且增量为1时才能用这种方法。那么,如何才能解决这个问题呢?请继续往下看。

方法三:
对方法二进行了改进。主要思路是,将表中所有的主键值读进一个数组,从数组中随机读出一个值,按照这个值取出对应记录。下面是C#的例子:

//将主键值读进ArrayList
ArrayList DataIndex = new ArrayList();
while (sdr.Read()) //sdr为存放所有主键值的SqlDataReader
{
DataIndex.Add(sdr[0]); //存入ArrayList
}

//从ArrayList中随机读取数据项
Random rand = new Random();
int num = Convert.ToInt32(DataIndex[rand.Next(DataIndex.Length)]);

//读取记录的Sql字符串
string SqlStr = "select * from tableA where PK = " + num;


这样不管主键是否为自增长字段,也不管数值是否连续,都能够应付自如了。经过笔者的测试,在数据量为50万的情况下代码运行速度几乎没有受到什么影响,可见ArrayList的操作性能是可以信赖的。

热心网友 时间:2022-04-12 01:52

string sql_text="select top 15 * from tableName order by NewID()"
tableName:
表名
NewID()函数说明:
NewID()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序. 所以最终结果再按这个排序, 排序的结果当然就是无序的了 .

热心网友 时间:2022-04-12 03:10

select .. from .. order by newid()
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
amd锐龙r75700g超频性价比装机方案,要核显性能综合表现超 架空电线故障如何排除 ...unexpected T_CONSTANT_ENCAPSED_STRING in 怎么解决这个错啊_百度... php错误Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_S... PHP出现如下情况 syntax error, unexpected T_ENCAPSED_AND_WHITES... php 如何捕获类似于Parse error: syntax error, unexpected T_CONSTA... 挂烫机如何熨西装 戗驳领西装怎么熨烫 西装前片怎么推拉拔烫 西装能不能拿去烫 请问是否有海尔冰箱HSW20的结构示意图,如遇漏水问题该如何处理?(具体方法) 谢谢 excel多数据如何求和? 海尔冰箱bcd-176td xz散热板结构图 求教,有没有什么好的结构可以实现自动吸水,除了泵以外? 专升本学费大概多少钱 佳鑫诺专接本上课得多少钱? 海尔冰箱BCD227SKH内部构造是什么样子 海尔冰箱管子的结构 商业银行在发放贷款时,最关注的是借款人的第一还款来源,它包括 60万年薪要交多少个人所得税 60万年薪税后多少 6、一家年度应纳税所得额600万元的企业,应缴纳所得税多少钱? 在日本上班年薪600W日元,如何计算税收? 每月工资600万要上税多少 NBA的税率是多少?姚明的年薪是600万,他要交多少税? 企业收入600万一年要缴纳哪些税 写给中考朋友一封信 相机、电脑、相片打印机连接在一起,拍了相片,可以立刻直接打印出来,是怎么做到的呢? 拉筋有什么好的效果? 2011年成人高考专升本190分能考上安徽理工大学的采矿工程吗? 索伊和海尔哪个牌子的冰箱好一点?买冰箱主要看那些构造、功能? 如何统一将新年祝福语发给所有人? 为什么蚂蚁庄园无缘无故给我这么多的额外高级饲料,我什么任务也没做,为什么他会给我这么多的高级饲料? 无塔供水水泵抽不出水为什么 昌通码只有微信小程序有吗 抽水泵为什么不抽水供电,运转正常,没吸力 如果在专升本的机构学习八个月下来要花多少钱? 专转本辅导班要多少钱啊? 福建专升本培训机构的费用大概多少 农村里很传统的那种两个轮子的架子车 学名叫什么车啊? 想问下应届生专升本报培训班的话费用大概是多少 视觉传达专接本辅导班费用多少? 骑自行车从来宾到桂林,需要怎样的车子,还有什么装备吗? EXCEL表格求和问题(数量太多) 老师:鹿茸粉只能等到夏至那一天吃吗?为什么? 春天可以吃鹿茸片吗 夏至什么时候吃鹿茸粉 什么是架子车 工商银行etc手机上办理还有礼品赠送吗? 架子车的延伸研读