MS Access 2010中用于将查询结果限制为前1000个的语法是什么?
我已经试过了
SELECT tblGL.[Cost Centre Code]
FROM tblGL
LIMIT 1000;
但我收到错误“ FROM子句中的语法错误”。
我也尝试过设置“最大记录”属性,但是它似乎没有任何作用-无论我在“最大记录”字段中输入什么值,我仍然可以获得7,000多个结果。
我还希望有一个第二个查询,从第1,001个开始选择下一个25,000个。就像是:
SELECT tblGL.[Cost Centre Code]
FROM tblGL
LIMIT 1001, 25000;
那么,相当于Access的MySQL是什么:LIMIT 1001、25000(即从第1,001st开始返回25,000个结果)?
不幸的是,在MS Access中这并不像在MySQL中那样简单。
在Access中,您需要使用嵌套的子查询。
这是我的答案,在这里我向您展示如何在C#中为分页建立正确的SQL字符串:
如何进行MS Access数据库分页+搜索?
从该答案中获取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 (以该顺序,因为我们将行降序排列!)
要使行按升序排列,只需再次从表中加载(并按升序排列!),但只有带有Cost Centre Codes
from步骤2的行即可。
得到它了?
是的,乍看之下看起来很吓人,但是只要您“获得”子查询,实际上并不那么困难。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句