MS Access 2010中用于将查询结果限制为前1000个的语法是什么?
我试过这个
SELECT tblGL.[Cost Centre Code]
FROM tblGL
LIMIT 1000;
但是我收到错误'FROM子句中的语法错误'。
我也尝试过设置Max Records属性,但它似乎没有做任何事情 - 无论我在Max Records字段中输入什么值,我仍然可以得到7,000+个结果。
我还希望有一个第二个查询,从1,001st开始选择下一个25,000。类似的东西:
SELECT tblGL.[Cost Centre Code]
FROM tblGL
LIMIT 1001, 25000;
答案 0 :(得分:2)
那么Access的等价物是什么:LIMIT 1001,25000(即从1,001开始返回25,000个结果)?
不幸的是,在MS Access中,这并不像MySQL那么简单 在Access中,您需要使用嵌套子查询。
这是我的答案,我正在展示如何在C#中为分页构建正确的SQL字符串:
How to do MS Access database paging + search?
从该答案中获取SQL字符串并插入表名和列名将导致此查询:
select [Cost Centre Code] from tblGL
where [Cost Centre Code] in (
select top 25000 sub.[Cost Centre Code]
from (
select top 26000 tab.[Cost Centre Code]
from tblGL tab
where 1=1
order by tab.[Cost Centre Code]
) sub
order by sub.[Cost Centre Code] desc
)
order by [Cost Centre Code]
这至少消除了对基本C#知识的需求,但是如果您不知道子查询的工作方式,我担心您仍会感到困惑: - )
问题是:
Access没有内置方式直接获取25000行,但跳过前1000行
唯一可能的是获得前X行。
所以我正在做这个(从内到外):
加载第一个 26000 行 (1000 + 25000,因为我们要跳过1000行,然后加载25000)
从此数据集中加载前25000行,但按顺序递减 这将有效地将行26000加载到1001 (按此顺序,因为我们命令行降序!)
要按升序获取行,只需再次从表中加载(并按升序排序!),但只从步骤2中加载Cost Centre Codes
的行。 / p>
知道了吗? 是的,乍一看看起来令人生畏,但是一旦你“获得”子查询,它实际上并不那么困难。
答案 1 :(得分:1)
MySQL& SQLite使用limit
。对于SQL Server& MS Access,您需要使用查询的top X
in the select
portion:
select top 1000 tblGL.[Cost Centre Code] FROM tblGL
答案 2 :(得分:1)
如果您想使用参数
Select Top (@Rows) tblGL.[Cost Centre Code] FROM tblGL