从数据库里随机抽取2条记录

 

 

从数据库里随机抽取2条记录


(1)SQL Server 2000 :

 

 SELECT TOP 2 * FROM Exam ORDER BY NEWID()

 

(2) Access:

 

 

 

 

-----------------------------------------------------------

转自:http://hi.baidu.com/qingwen98/blog/item/eb82151a68443c118618bfd5.html

 

从数据库随机抽取记录(ASP/access/ms sql)程序代码

ASP与数据库浏览次数:

 

 

在数据库(Access/MS Sql)随机抽取记录


随机提取10条记录的例子:

Access(ASP):

sql="Select top 10 * FROM [tableName] orDER BY Rnd(id)"
其中id为自动编号,也可以换成其它数字类型的字段,如果想用非数字类型的字段,就要用到len函数了,语句:
sql="Select top 10 * FROM [tableName] orDER BY Rnd(len(title))"

得出记录如:

这样有个问题,就是生成的记录是不变的,就是不管怎么刷新都是这几条记录,如果想让每刷新一次,记录改变的话,就要用到 ASP中的随机函数,让 id值每次刷新后都重新生成新值,语句:

Randomize
sql="Select top 10 id FROM [tableName] order BY rnd(-(ID+"& rnd() &"))"
刷新两次得出的记录如:

这样,每刷新一次,记录就不相同了。

MS Sql
库:
    sql
库就不用这么麻烦了,一条SQL语句就能产生第次执行这条语句的时候产生不同的随机内容,语句:
sql="select top 10 * from [tablename] order by newid()"
其中,newidSQL内置函数,

 

SQL Server 2000:
SELECT TOP n * FROM tanblename ORDER BY NEWID()

Access:
SELECT TOP n * FROM tanblename ORDER BY rnd([一个自动编号字段])

SQL 有了 NEWID() 就无须多讲拉,但 Access 中没有,所以寄望于 RND,实际上这条语句在 Access 中的“查询”中是可以运行并得到随机结果的,但在 ASP 中却无法得到预期的随机效果——无论如何刷新得到的结果都是一样的(就算在语句前加上 Randomize 也一样于事无补)。

当然,也不少其他的解决方法,用数组的,用循环的……不好说不对,但总觉得跑题了。后来有另外的朋友试验出这个方法:表 TestTable,有自动编号字段 TestID,标题字段 TestTitle,随机取得5条纪录,用代码:

Randomize
SELECT TOP 5 [TestTitle] FROM [TestTable] ORDER BY Rnd(-(TestID+"&Rnd()&"))

实际上,我目前需要应用到随机纪录的地方就是用的这条语句,除此我没有其他更好的方法(但用过才知道,其实这条语句偶然会生成重复纪录的)。也许你会有更好的方法……

你可能感兴趣的:(sql,SQL Server,Blog,Access,asp)