服務(wù)熱線
153 8323 9821
這里是從SQL Server: 中取隨機(jī)記錄
Q. 如何得到隨機(jī)排序結(jié)果?
A. 要得到隨機(jī)排序的列,或者返回x條隨機(jī)選擇的列,你可以使用隨機(jī)數(shù)。但是RAND函數(shù)在
一個(gè)查詢中只能返回一個(gè)結(jié)果。你可以在NOWID函數(shù)返回的列上做ORDER BY。請(qǐng)看示例:
SELECT *
FROM Northwind..Orders
ORDER BY NEWID()
SELECT TOP 10 *
FROM Northwind..Orders
ORDER BY NEWID()
這段話翻譯得真是費(fèi)勁,干脆不管原文,直接意譯了。
不過提醒大家注意,這種方法是要對(duì)整個(gè)表掃描,然后產(chǎn)生一個(gè)計(jì)算列再排序的,最好不要
對(duì)大的表作這樣的操作,否則會(huì)很慢的。
這里是從 Access 中取隨機(jī)記錄:
<%
cn為connection對(duì)象
rs為recordset對(duì)象
recordCount為記錄總數(shù)
i代表記錄數(shù)
j代表重試次數(shù),防止進(jìn)入死循環(huán)
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
%>
當(dāng)記錄數(shù)相對(duì)于所取記錄數(shù)比較小時(shí),易出現(xiàn)重復(fù)取某一記錄,要克服這一點(diǎn)就得再加幾句了...