日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于如何生成随机记录

發布時間:2025/4/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于如何生成随机记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方法一:
在ACCESS環境中用rnd函數解決,以下查詢展示了如何從表中隨機抽取10條記錄
SELECT top 10 * FROM tbl1 ORDER BY Rnd(id)
另外, Rnd(id) 其中的id只是為了提供一個種子,可以利用其他任何數值來完成
id字段是自動編號字段,也可以用其他字段代替,只要能生成數值就行。
如果每次RND得到的結果都一樣,那是因為沒有使用 Randomize 語句來初始化隨機數生成器。

方法二:
在ASP、VB中無法使用上述方法,可以參考使用adodb.recordset.recordcount 屬性以及 adodb.recordset.AbsolutePosition 以及 RND 函數來解決問題。
Function RndID()
??? Dim rs As New ADODB.Recordset
??? Dim strsql As String
??? strsql = "select * from tbl1"
??? rs.CursorLocation = adUseClient
??? rs.Open strsql, CurrentProject.Connection, 2, 3
??? '在Access中可以使用 CurrentProject.Connection,
??? '其他語言中可以用 ADODB.CONNECTION對象。
???
??? Dim i As Long
??? Dim lngCount As Long
??? Dim lngRnd As Long
??? lngCount = rs.RecordCount
??? '一下取前10條隨機記錄
??? For i = 1 To 10
??????? lngRnd = Int((lngCount * Rnd) + 1)
??????? rs.AbsolutePosition = lngRnd
??????? Debug.Print rs("id")
??? Next
End Function


方法三:
用當前 TIME 做種子生成隨機數。如果時間重復最終還是重復,沒有從根本上解決問題,說白了還是種子的問題。要不重復就要徹底解決種子的問題,如果能取得毫秒級時間就基本能解決了
或者建議在組織 SQL 語句的時候有意插入一個 VB 函數生成的隨機值作為種子也可以
Dim sql
Dim RNUM
Randomize
RNUM = Rnd
sql = "select top 1 * from tbl1 order by rnd(" & RNUM & "-id)"

其中,方法三已經經過驗證,可以使用。

附:
關于用 SQL 得到 Access 的隨機記錄集????
此問題早已有人提出,解決的方法也非原創。寫這篇東西,意在共同探討。畢竟目前還沒有非常滿意的結論。先說說現在網上大多數轉貼是這樣說的:

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()&"))

實際上,我目前需要應用到隨機紀錄的地方就是用的這條語句,除此我沒有其他更好的方法(但用過才知道,其實這條語句偶然會生成重復紀錄的)。也許你會有更好的方法……

轉載于:https://www.cnblogs.com/cole2295/archive/2009/07/11/1520997.html

總結

以上是生活随笔為你收集整理的关于如何生成随机记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。