MSSQL:select top 10 * from [table] order by newid()
ACCESS:
復制代碼 代碼如下:
'以利用rs.move嘛
'如隨機取10條
n = 10
'先要判斷總記錄數是否少於10,若小於10,則有多少取多少 if n>10 rs.recordCount then n=rs.recordCount
dim ranNum
for i = 1 to n
Randomize()
ranNum = int(rs.recordCount*rnd)+1 '產生一個隨機數
rs.Move ranNum '移動游標到隨機數位置
response.write i & "-" & rs("title") & "<br />" '輸出內容
rs.Move -ranNum
next
'……
這樣就可以了,當然這樣有可能會取到重復的記錄,那麼把產生隨機數那句改下就可以了,聲明一個變量來存放已經產生過的隨機數,在產生新的隨機時先判斷是否已經產生過,若產生過則重新生成就是了,這個就比較簡單了,用instr等就可以搞定了~~
思路是這樣,其它自己動手試試吧。 不重復讀取還有個辦法就是只產生一個隨機數,然後挨著讀取這個隨機數後面的N條記錄。當然也要寫好判斷,隨機數要小於總記錄數-要讀取記錄數量。
復制代碼 代碼如下:
'……
dim n,ranNum
n = 10
Randomize()
ranNum = rs.recordCount-n
if ranNum<1 then ranNum=1
ranNum = int(ranNum*rnd)+1
rs.Move ranNum
for i=1 to 10
response.write i & "-" & rs("title") & "<br />" '輸出內容
rs.MoveNext '挨著向下讀取
next
'……
建議自己寫個簡單的Function來產生和判斷不重復隨機數。