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 访问限制语法的主要内容,如果未能解决你的问题,请参考以下文章

限制用户对 MS 访问中的表和查询的访问

限制少数用户访问数据库。 (MS 访问 2007)

MS 访问限制 X、Y

MS 访问限制 X、Y

如何使用 IPTables 限制Ip访问

python基础语法15 组合,封装,访问限制机制,内置装饰器property