Advantage 数据库中的分页
Posted
技术标签:
【中文标题】Advantage 数据库中的分页【英文标题】:Paging in Advantage Database 【发布时间】:2010-02-18 10:46:07 【问题描述】:我正在创建一个在 Advantage Database 服务器上运行的 Web 应用程序,这不是我个人选择的武器,但这是公司使用的。 我有几个最终用户需要能够查看的大列表,但是我似乎找不到在 SQL 中对结果进行分页的方法。
Advantage 数据库有类似 LIMIT / OFFSET 的东西吗?如果没有,有什么建议可以解决这个问题吗?
提前谢谢你!
【问题讨论】:
【参考方案1】:我了解 LIMIT 和 ROWNUM 将是 Advantage 即将发布的版本中的新功能。 http://feedback.advantagedatabase.com/forums/2671-general/suggestions/30213-return-query-specific-row-number-?ref=title
但是,在那之前,我过去一直使用它来选择第 50-60 行。
从 mytable 中选择前 10 个 * 其中 rowid 不在(从 mytable 中选择前 50 个 rowid)
@tommieb75,您指出 SQL 方言不标准。我发现它基于包含大部分 SQL-92 标准和一些 SQL-2003 特性的标准。
【讨论】:
这似乎可行,尽管我必须说获取整个表(大约有 160K 记录)所需的时间比从中获取特定页面所需的时间更少。另外,这如何在连接表上工作?【参考方案2】:更新这里的任何绊脚石,但正如 Edgar 在他的回答中提到的,Advantage 10 SQL 现在支持 START AT
关键字。
SELECT TOP 10 START AT 11 * FROM emp
见:devzone.advantagedatabase.com/dz/webhelp/Advantage10.1/master_limiting_query_results.htm
【讨论】:
【参考方案3】:根据this,Advantage 中LIMIT
的正确语法是SELECT TOP 10 * FROM YOURTABLE
。
【讨论】:
@dries.hoebeke :是的,显然没有ROWNUM
功能,因此能够使用SELECT TOP
让您在分页方面无处可去。我想您唯一剩下的选择是将所有内容加载到内存中并执行分页逻辑。这绝对是最大吸力的解决方案,但我真的没有看到你有其他选择。如果您还没有,您可能应该在这里投票支持ROWNUM
的未来实施:feedback.advantagedatabase.com/forums/2671-general/suggestions/…以上是关于Advantage 数据库中的分页的主要内容,如果未能解决你的问题,请参考以下文章
如何将 100 年添加到 Advantage 数据库中的日期
Windows 服务中的 Advantage 数据提供程序错误 6097