2016-02-17 60 views
2

我使用这个简单的查询使用随机排序在MS-Access数据库:随机排序查询访问

SELECT pk FROM TABLE ORDER BY Rnd(pk) asc 

,它的工作很好,当我与Microsoft Access测试2010

然而,当我使用传统的asp调用这个查询时,随机排序不起作用。

这里是我的代码:

set Rs = Server.CreateObject("ADODB.Recordset") 
Rs.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/dbfolder") & "\dbname.mdb" 

Rs.Source = "SELECT pk FROM TABLE ORDER BY Rnd(pk) asc" 
Rs.CursorType = 3 
Rs.CursorLocation = 2 
Rs.LockType = 3 
Rs.Open() 

do while not Rs.eof 
    'do stuff 
    Rs.Movenext 
loop 
+1

什么是“不工作”是什么意思? –

+0

对不起,这意味着没有随机排序。订购它总是相同,当我刷新页面 –

+0

你可以发布'connessione'连接字符串*(不包含用户名和密码)*? – Lankymart

回答

3

你只需要“salt”你的随机数生成器:

Rs.Source = "SELECT pk FROM TABLE ORDER BY Rnd(-Timer() * [pk]) Asc" 
1

最后看来,我找到了解决办法。

来源:http://www.cosnetics.co.uk/articles/select-random-records-from-access/

按照什么写在上面的链接

这里是从Access选择随机记录 数据库的一个非常简单的方法:

SELECT TOP 5 * FROM [tableName] ORDER BY rnd(INT(NOW*id)-NOW*id)

的只有先决条件是您有一个自动编号标识列。它也应该注意,虽然这会产生一组随机的记录,但它们在数学意义上并不是真正的随机数,但对于大多数用途而言,它们应该是足够随机的。

这种选择记录的方法也适用于sql server,但是您的 必须将rnd更改为rand。

如果您找到更好的解决方案,我很乐意将其标记为良好的解决方案。同时,我会在这里留下。希望这会帮助别人。 (你不会相信,但我花了一些时间来找到它)