SQL - 返回有限的行数,但是完整的行数

时间:2010-02-04 14:29:19

标签: sql visual-foxpro foxpro

场景:我需要从Visual FoxPro数据库中提取信息;但是,针对此运行大型查询会导致系统锁定。为了解决这个问题,我们设置了限制,如果它超过了一定的时间,就会取消查询,并限制它返回的行数。

有没有办法用“SELECT TOP ###”进行查询,还能返回通过语句找到的实际行数吗?或者是两次运行查询的唯一方法? (原因是我们仍然可以查询运行,但是告知用户发生了什么。即“###显示###找到项目的第一###”)。

我的初步试验只是简单地在语句的选择部分添加“COUNT(*)”,但这并没有完全达到我想要的效果(它返回了正确的行数,但只返回了其余数据占一行。)

2 个答案:

答案 0 :(得分:2)

如果我正确理解了这个问题,你可以进行一个子选择,但这意味着你为每一行返回调用计数SQL:

select top 10 field1, field2, (select count(*) from table) as totalrows from table

这将为您提供前10行,每个被调用的totalrows中包含一个额外列,其中包含表中所有行的计数。

就个人而言,我只是运行一个单独的查询来获取顶部 n 行和计数。

答案 1 :(得分:2)

您需要运行2个单独的SELECT。一个用于检索查询返回的COUNT行,然后返回特定页面的记录子集。

您可以通过仅在检索到第一个“页面”时检索总COUNT一次来优化此项(即不对后续页面执行整个计数)