使用Microsoft Access查询结果中的行号

Ara*_*hdn 8 sql ms-access

我总是在sql server中使用这个查询来获取表中的行号:

SELECT *
FROM   (SELECT *,
               Row_number()
                 OVER(
                   ORDER BY [myidentitycolumn]) RowID
        FROM   mytable) sub
WHERE  rowid = 15  
Run Code Online (Sandbox Code Playgroud)

现在我在Access 2010中工作,这似乎无法正常工作.在Access中是否有任何替代此查询?

Bob*_*ort 10

在查询中分配行号的另一种方法是使用该DCount函数.

SELECT *, DCount("[ID]","[mytable]","[ID]<=" & [ID]) AS row_id
FROM [mytable]
WHERE row_id=15
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案很简单,但似乎非常低效.我不会尝试在大型数据集上! (2认同)

Pin*_*nyM 8

MS-Access不支持ROW_NUMBER().使用TOP 1:

SELECT TOP 1 *
FROM [MyTable]
ORDER BY [MyIdentityCOlumn]
Run Code Online (Sandbox Code Playgroud)

如果你需要第15行 - MS-Access没有简单的内置方法来做到这一点.您可以使用反向嵌套排序来模拟rownumber来获取:

SELECT TOP 1 *
FROM (
  SELECT TOP 15 *
  FROM [MyTable]
  ORDER BY [MyIdentityColumn] ) t
ORDER BY [MyIdentityColumn] DESC
Run Code Online (Sandbox Code Playgroud)

  • 我知道我会因此被否决,但说真的,对于像 Access 这样长期流行的应用程序中的基本问题,不应该需要这种解决方法。 (3认同)