gpt4 book ai didi

sql - 如何在 SQL 中为 MS Access 实现分页?

转载 作者:行者123 更新时间:2023-12-04 03:17:58 25 4
gpt4 key购买 nike

我正在通过 OdbcConnection 使用 ASP.NET Access Microsoft Access 2002 数据库 (MDB)。类,虽然速度很慢,但效果很好。
我的问题是关于如何在 SQL 中实现分页来查询这个数据库,因为我知道我可以实现 TOP条款为:

SELECT TOP 15 *
FROM table
但我无法找到一种方法来将其限制为偏移量,就像使用 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
失败了:

Error Source: Microsoft JET Database Engine

Error Message: No value given for one or more required parameters.


我无法解决此错误,但我假设它与确定 rownumber 的子查询有关。 ?
任何帮助将不胜感激;我在谷歌上的搜索产生了无益的结果:(

最佳答案

如果您希望在 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

其中 15 是 StartPos + PageSize,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

它不应该给你一个错误,但我不认为这是你想要的分页结果。

关于sql - 如何在 SQL 中为 MS Access 实现分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com