【问题标题】:Random sorting query Access随机排序查询访问
【发布时间】:2016-05-29 01:06:55
【问题描述】:

我正在使用这个简单的查询在 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

【问题讨论】:

  • “不起作用”是什么意思?
  • 对不起,这意味着没有随机排序。当我刷新页面时,它的顺序总是一样的
  • 你能发布connessione连接字符串(不包括用户名和密码)
  • 页面缓存了吗?
  • 连接字符串在主帖中更新,没有缓存

标签: sql ms-access asp-classic ms-access-2010 server-side


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我终于找到了解决办法。

    来源: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)

    唯一的先决条件是您有一个 AutoNumber Id 列。它 还应该注意的是,虽然这会生成一个随机集 记录,它们在数学意义上并不是真正随机的,而是 对于大多数用途来说应该是足够随机的。

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

    如果您找到更好的解决方案,我会很高兴将其标记为好的解决方案。与此同时,我会把它留在这里。希望这对其他人有帮助。 (你不会相信,但我花了一些时间才找到它)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 2014-11-15
      • 2019-12-29
      相关资源
      最近更新 更多