一句SQL隨機查詢ACCESS中的幾條記錄

2021-04-01 19:47:04 字數 1772 閱讀 7676

這段時間要完成學校教學網的隨機出題的模組,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...