我正在通过 ASP.NET 访问 Microsoft Access 2002 数据库 (MDB)OdbcConnection
类,尽管速度很慢,但效果很好。
我的问题是关于如何在 SQL 中实现分页以查询该数据库,因为我知道我可以实现TOP
子句为:
SELECT TOP 15 *
FROM table
但我无法找到一种方法将其限制为偏移量,就像 SQL Server 使用 ROWNUMBER 可以完成的那样。我最好的尝试是:
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
失败并显示:
错误来源:Microsoft JET 数据库引擎
错误消息:没有为一个或多个必需参数给出值。
我无法解决这个错误,但我假设它与确定 a 的子查询有关rownumber
?
任何帮助将不胜感激;我在谷歌上的搜索没有得到任何帮助:(
如果您想在 MS Access 中应用分页,请使用此
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
其中 15 是起始位置 + 页面大小,5 是PageSize.
编辑评论:
您收到的错误是因为您试图引用同一查询级别中分配的列名,即行号。如果您要将查询更改为:
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
它不应该给你一个错误,但我不认为这是你想要的分页结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)