這段時間要完成學校教學網的隨機出題的模組,access下利用sql = "select top "&nums&" * from [table] order by rnd(乙個自動增長的欄位名)" 來做了,但我發現每次出題為什麼不能'隨機'了啊,總是那幾道題,到csdn找了一下,孟子e章說去看看dsclub的blog把,我近來一看果然發現這兄弟早就有一套他自己的解決方案了
轉如下:
針對「用一條sql得到資料庫中的隨機記錄集」問題在網上已經有很多答案了:
sql server 2000:
select top n * from tanblename order by newid()
access
select top n * from tanblename order by rnd([乙個自動編號字段])
好了!就說說這個access的!
開啟access2003建立乙個帶有自動編號欄位的表 t1 : id_(auto),content_
隨便插入些許記錄
然後,點選「查詢」新建乙個查詢,「設計檢視」,選擇t1,然後選擇sql檢視(這樣可以寫自己的sql了,比較習慣),好了,寫吧:
select top 3 [content_] from [t1] order by rnd([id_])
然後執行一下結果,嗯記住了是什麼結果哦。
返回sql檢視,再執行看結果,跟上次的不一樣!那就對了!(當然你的t1里別只有少於3條的記錄呀)
好了,我們是搞web開發的!
寫個asp看看
<%
set rs = con.execute("select top 3 [content_] from [t1] order by rnd([id_])")
do while not rs.eof
response.write rs.fields("content_").value & "
" rs.movenext
loop
rs.close
set rs = nothing
con.close
set con = nothing
在localhost上執行一下這個asp,看到結果了吧,記住!再f5一下!咦?~~~~~~~~~~~還那個結果!這可不是我們想要的!
當然了,rnd在執行前應該執行randomize語句的!
可是怎麼執行?
access裡支援randomize麼?我的access也不是很熟,看了一下幫助,只找到了vbs裡的那個randomize……
解決問題是每個程式設計師最來精神的!
趕緊google一下!
翻了半天也沒有好的解決方案,有的乾脆用asp來迴圈的找position,呸,費了半天勁幹什麼呢,我就想sql解決怎麼辦?
access裡的randomize不知道怎麼用,asp的基本功還會吧?開動腦筋,有了!
<%
randomize
set rs = con.execute("select top 3 [content_] from [t1] order by rnd(-(id_+" & rnd() & "))")
do while not rs.eof
response.write rs.fields("content_").value & "
" rs.movenext
loop
rs.close
set rs = nothing
con.close
set con = nothing
SQL 一句sql 分頁
有關分頁 sql 的資料很多,有的使用儲存過程,有的使用游標。本人不喜歡使用游標,我覺得它耗資 效率低 使用儲存過程是個不錯的選擇,因為儲存過程是經過預編譯的,執行效率高,也更靈活。先看看單條 sql 語句的分頁 sql 吧。方法1 適用於 sql server 2000 2005 select t...
一句SQL完成動態分級查詢
在最近的 活字格專案中使用 activereports 報表設計器設計乙個報表模板時,遇到乙個多級分類的難題 需要將某個部門所有銷售及下屬部門的銷售金額彙總,因為下屬級別的層次不確定,所以靠拼接子查詢的方式顯然是不能滿足要求,經過一番實驗,利用了cte common table expression...
一句SQL完成動態分級查詢
如果想查詢所有西北區的員工 包含西北 西安 蘭州 如下圖所示 以下 使用sqlite 3.18.0 測試通過with depts dept id as select d dept id from dept d join employees e on d dept id e dept id where...