MS 访问限制语法
Posted
技术标签:
【中文标题】MS 访问限制语法【英文标题】:MS Access limit syntax 【发布时间】:2015-02-28 17:31:09 【问题描述】:我有一个非常基本的 Access DB 表,称为 SCHEDULE。当我创建以下 SQL 查询条目时,一切正常。
SELECT *
FROM schedule
ORDER BY start;
现在我想要跳过前 3 条记录并像这样查看剩余的 10 条:
SELECT *
FROM schedule
ORDER BY start
LIMIT 3,7;
但我在查询表达式'START LIMIT 3'中收到“语法错误(缺少运算符)”
所以作为测试,我尝试了以下方法:
SELECT *
FROM schedule
ORDER BY start
LIMIT 0,3;
同样的错误。
正确的语法是什么?
【问题讨论】:
【参考方案1】:您可以使用 MS Access 的子查询来做到这一点:
select top 7 *
from (select top 10 *
from schedule
order by start
) as s
order by start desc;
如果您希望最终结果按升序而不是降序排列,请将其用作子查询并添加order by
start。
编辑:
如果你只想避免前三个:
select *
from schedule
where start not in (select top 3 start from schedule order by start);
【讨论】:
这会很完美,但是这个列表会增长,所以它不会总是 10,可能是 100,计数会上升和下降......前 3 名会改变,但总是需要离开了我正在制作的清单【参考方案2】:MS Access 中没有 LIMIT
运算符,这就是您收到语法错误的原因,但您可以使用 TOP
和子查询获得此结果,如下所示:
SELECT *
FROM schedule
WHERE schedule.ID IN
(
SELECT TOP 7 SUB.ID
FROM [
SELECT TOP 10 schedule.start, schedule.ID
FROM schedule
ORDER BY schedule.start, schedule.ID
]. AS SUB
ORDER BY SUB.start DESC, SUB.ID DESC
)
ORDER BY schedule.start, schedule.ID
【讨论】:
以上是关于MS 访问限制语法的主要内容,如果未能解决你的问题,请参考以下文章