Re: [SQL ] 如何隨機取一筆資料

看板Database (資料庫)作者 (會長繞跑了)時間18年前 (2006/08/26 17:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/9 (看更多)
我一開始在網路上找的結果 也發現有人是用rand()函數 這函數在MSSQL & Access都可以使用 不過他的用法甚至不用搭配程式語言使用 直接用SQL語法就可以隨機選出一筆了 不過當我用這種語法時候 SELECT rand() as RAND_Column FROM XXX RAND_Column欄位雖然會有random值 但是全部都是同樣的一個值Orz 比如 RAND_Column 2.13 2.13 2.13 2.13 2.13 這種情形 所以用Rand欄位去做排序也不可行 最後我才試驗可以用NewID函數 可以讓每一個tuple都擁有不同的NewID SQL裡面的Rand函數要怎麼使用才能夠達到這個目的呢? 如果使用Rand函數可以成功的話 用Access應該就沒問題了 謝謝 ※ 引述《noguest (guest)》之銘言: : ※ 引述《seagal (會長繞跑了)》之銘言: : : 我最近剛好用Access的時候 : : 也需要處理這個問題 : : 所以我幫你找了一下 : : 在MSSQL上面的用法是 : : SELECT TOP 1 [供應商代號] FROM [供應商] : : ORDER BY NewID() : : 但Access我就找不到有類似NewID的功能了 : : 真是有點遜的軟體 : ACCESS 沒有類似的功能, 網路上一個常見的例子是 : ================================================ : <% : Randomize() : randNum = (CInt(1000 * Rnd) + 1) * -1 : set conn = CreateObject("ADODB.Connection") : sql = "SELECT TOP 1 cols," & _ : "r = Rnd(" & randNum & ")" & _ : "FROM TableName " & _ : "ORDER BY r" : set rs = conn.execute(sql) : response.write rs(0) : ' ... : rs.close: set rs = nothing : conn.close: set conn = nothing : %> : ================================================== : 另外, 若是用其他的 database, DB2 可用 rand(), : Oracle 則可用 dbms_random.value. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.169.200 ※ 編輯: seagal 來自: 140.109.169.200 (08/26 17:37)
文章代碼(AID): #14y1JZ7r (Database)
討論串 (同標題文章)
文章代碼(AID): #14y1JZ7r (Database)