隨機選擇資料庫記錄的方法(使用randomize函式,通過sql語句實現)
對儲存在資料庫中的資料來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求asp「找個隨機數」然後列印出來。實際上常見的解決方案是建立如下所示的迴圈:
randomize
rnumber = int(rnd*499) +1
while not objrec.eof
if objrec("id") = rnumber then
... 這裡是執行指令碼 ...
end if
objrec.movenext
wend
這很容易理解。首先,你取出1到500範圍之內的乙個隨機數(假設500就是資料庫內記錄的總數)。然後,你遍歷每一記錄來測試id 的值、檢查其是否 匹配rnumber。滿足條件的話就執行由then 關鍵字開始的那一塊**。假如你的rnumber 等於495,那麼要迴圈一遍資料庫花的時間可就長 了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型資料庫了,後者通常在乙個資料庫內就包含了成千上萬條記錄。這時候不就死 定了?
採用sql,你就可以很快地找出準確的記錄並且開啟乙個只包含該記錄的recordset,如下所示:
randomize
rnumber = int(rnd*499) + 1
sql = "select * from customers where id = " & rnumber
set objrec = objconn.execute(sql)
response.writernumber & " = " & objrec("id") & " " & objrec("c_email")
不必寫出rnumber 和id,你只需要檢查匹配情況即可。只要你對以上**的工作滿意,你自可按需操作「隨機」記錄。recordset沒有包含其他內容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。
再談隨機數
現在你下定決心要榨乾random 函式的最後一滴油,那麼你可能會一次取出多條隨機記錄或者想採用一定隨機範圍內的記錄。把上面的標準random 示例擴充套件一下就可以用sql應對上面兩種情況了。
為了取出幾條隨機選擇的記錄並存放在同一recordset內,你可以儲存三個隨機數,然後查詢資料庫獲得匹配這些數字的記錄:
sql = "select * from customers where id = " & rnumber & " or id = " & rnumber2 & " or id = " & rnumber3
假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈結的列表),你可以用between 或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 select 語句只顯示一種可能(這裡的id 是自動生成的號碼):
sql = "select * from customers where id between " & rnumber & " and " & rnumber & "+ 9"
注意:以上**的執行目的不是檢查資料庫內是否有9條併發記錄。
隨機讀取若干條記錄,測試過
access語法:select top 10 * from 表名 order by rnd(id)
sql server:select top n * from 表名 order by newid()
mysqlelect * from 表名 order by rand() limit n
access左連線語法(最近開發要用左連線,access幫助什麼都沒有,網上沒有access的sql說明,只有自己測試, 現在記下以備後查)
語法elect table1.fd1,table1,fd2,table2.fd2 from table1 left join table2 on table1.fd1,table2.fd1 where ...
使用sql語句 用...代替過長的字串顯示
語法:sql資料庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
access資料庫:select iif(len(field)>2,left(field,2)+'...',field) from tablename;
mysql隨機選擇記錄表 隨機選擇資料庫表記錄
在日常開發中,我們通常需要在指定的一張表或多張表中隨機的選擇一條記錄作為顯示。如 廣告展示 從多個廣告商的廣告中隨機選擇乙個 新聞推薦等等 常見方法如下 1 隨機排序後獲取第一行 獲取隨機記錄的常見sql做法,就是對查詢結果進行隨機排序,然後獲取第一行。如 select from bugs orde...
隨機抽取資料庫記錄
mysql select from tablename order by rand limit 10 sql server select top 5 from tablename order by newid access select top 5 from tablename order by r...
隨機顯示資料庫記錄
system命名空間有乙個random類,用來產生隨機數。本文就介紹利用這個random類來隨機顯示資料庫記錄。random類有乙個過載方法叫next,它可以產生隨機數,它允許輸入兩個引數,以產生這兩個數之間的隨機數。例如 random r new random random.next 1,100 ...