作者seagal (会长绕跑了)
看板Database
标题Re: [SQL ] 如何随机取一笔资料
时间Sat Aug 26 17:36:03 2006
我一开始在网路上找的结果
也发现有人是用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)