MS Access 2010 中用于将查询结果限制为前 1,000 个的语法是什么?
我试过这个
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;
那么 MySQL 的 Access 等价物是什么呢:LIMIT 1001, 25000(即从第 1,001 个结果开始返回 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 rows
(1000 + 25000,因为我们要跳过 1000 行,然后加载 25000)
从此数据集中加载前 25000 行,但按降序排列。
这将有效地将第 26000 行加载到第 1001 行(按照这个顺序,因为我们对行进行降序排列!)
要按升序排列行,只需再次从表中加载(并且顺序升序!),但仅限于带有Cost Centre Codes
从步骤 2 开始。
Got it?
是的,乍一看似乎很吓人,但是一旦你“掌握”了子查询,实际上并没有那么困难。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)