Re: [SQL ] 如何隨機取一筆資料
我一開始在網路上找的結果
也發現有人是用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)
討論串 (同標題文章)
Database 近期熱門文章
PTT數位生活區 即時熱門文章