Cod*_*uth 10 sql ms-access pagination
我正在通过OdbcConnection类使用ASP.NET访问Microsoft Access 2002数据库(MDB),尽管速度非常慢,但它运行良好.
我的问题是关于如何在SQL中实现对此数据库的查询分页,因为我知道我可以将TOP子句实现为:
SELECT TOP 15 *
FROM table
Run Code Online (Sandbox Code Playgroud)
但我无法找到一种方法将此限制为偏移,因为使用ROWNUMBER可以使用SQL Server.我最好的尝试是:
SELECT ClientCode,
(SELECT COUNT(c2.ClientCode)
FROM tblClient AS c2
WHERE c2.ClientCode <= c1.ClientCode)
AS rownumber
FROM tblClient AS c1
WHERE rownumber BETWEEN 0 AND 15
Run Code Online (Sandbox Code Playgroud)
失败的是:
错误源:Microsoft JET数据库引擎
错误消息:没有给出一个或多个必需参数的值.
我无法解决这个错误,但我假设它与确定一个的子查询有关rownumber?
任何帮助将不胜感激; 我在谷歌上的搜索产生了无益的结果:(
Adr*_*der 11
如果您希望在MS Acces中应用分页,请使用此选项
SELECT *
FROM (
SELECT Top 5 sub.ClientCode
FROM (
SELECT TOP 15 tblClient.ClientCode
FROM tblClient
ORDER BY tblClient.ClientCode
) sub
ORDER BY sub.ClientCode DESC
) subOrdered
ORDER BY subOrdered.ClientCode
Run Code Online (Sandbox Code Playgroud)
其中15是StartPos + PageSize,5是PageSize.
编辑评论:
您收到的错误是因为您尝试在查询的同一级别引用列名分配,即rownumber.如果您要将查询更改为:
SELECT *
FROM (
SELECT ClientCode,
(SELECT COUNT(c2.ClientCode)
FROM tblClient AS c2
WHERE c2.ClientCode <= c1.ClientCode) AS rownumber
FROM tblClient AS c1
)
WHERE rownumber BETWEEN 0 AND 15
Run Code Online (Sandbox Code Playgroud)
它不应该给你一个错误,但我不认为这是你想要的分页结果.
| 归档时间: |
|
| 查看次数: |
13850 次 |
| 最近记录: |