黑暗之魂2bug刷魂:随机提取Access/SqlServer数据库中的10条记录的SQL语句

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 01:55:28
代码如下:
本文相关代码如下:
Access:
select top n * from table order by rnd(id)'id为数据库的自动编号字段
Sql Server:
select top n * from table order by newid()但在ASP+Access中,或许是因为缓存的原因,第一条SQL语句无法得到预期的结果,而VB+Access则可以。解决办法是改用如下SQL语句:   本文相关代码如下:
Randomize
sSqlTxt="Select top 10 * From Tab order by rnd(-(id+" & rnd() & "))"该文章转载自脚本之家:http://www.jb51.net/html/200607/30/373.htm asp随机查询2007-06-06 12:32

如果是sqlserver 用order by newid 不要求有newid列;

如果是access数据库把这个order by 加上

order by right(cstr(rnd(-int(rnd(-timer())*100+id)))*1000,2)

但是要求表中有id列 整数类型

 

经过测试上面的order by right(cstr(rnd(-int(rnd(-timer())*100+id)))*1000,2) 会出现随机数个数问题.在黑羽的个人网站上找到另一种方法(只适合随机一条数据)。

注:如果用上面语句会出现个数不对情况那就把后面的那个2换成更大的数数字。

    在首页上的显示日记这块上,很想做成随机取出一条记录来显示,也知道可以用rnd这个函数,用以下的语句
sql="select top 1 * from aaa order by rnd(id)",没有问题,取出来了, 可是,取出来的,总是固定的一条记录,肯定有问题
    上网查,终于查到了,原来还是在这个rnd上下功夫
sql="SELECT TOP 1 * FROM aaa where hfid=0 ORDER BY rnd(-(id+"&rnd()&"))"
不过,还要在它前面加上一句:
Randomize