这里是从SQL Server: 中取随机记录
Q. 如何得到随机排序结果?
A. 要得到随机排序的列,或者返回x条随机选择的列,你可以使用随机数。但是RAND函数在
一个查询中只能返回一个结果。你可以在NOWID函数返回的列上做ORDER BY。请看示例:
SELECT *
FROM Northwind..Orders
ORDER BY NEWID()
SELECT TOP 10 *
FROM Northwind..Orders
ORDER BY NEWID()
这段话翻译得真是费劲,干脆不管原文,直接意译了。
不过提醒大家注意,这种方法是要对整个表扫描,然后产生一个计算列再排序的,最好不要
对大的表作这样的操作,否则会很慢的。
这里是从 Access 中取随机记录:
<%
cn为connection对象
rs为recordset对象
recordCount为记录总数
i代表记录数
j代表重试次数,防止进入死循环
dim i,j
randomize()
do while i<8 and j<30
//8条记录
sql="select F1,F2 from T1 where id="&rnd()*recordCount\1
rs.open sql,cn,1,1
if not (rs.bof and rs.eof) then
i=i+1
response.write("....")
end if
rs.close
j=j+1
loop
%>
当记录数相对于所取记录数比较小时,易出现重复取某一记录,要克服这一点就得再加几句了...