求适用于Access数据库的Skip等效SQL:跳过前5条取Top5
在Access中实现Skip(5)后取Top5的SQL(VB变量版)
在Microsoft Access里没法直接用像SQL Server那样的OFFSET ... FETCH语法,所以得通过子查询来模拟LINQ的.Skip(5).Take(5)效果。下面是具体的实现代码,已经帮你把SQL语句赋值给VB变量了:
单一排序字段的情况(推荐,比如有主键ID)
Dim myQuery As String myQuery = "SELECT TOP 5 * " & _ "FROM Tasks " & _ "WHERE ID NOT IN (SELECT TOP 5 ID FROM Tasks ORDER BY ID) " & _ "ORDER BY ID;"
多字段排序的情况(无单一唯一键时)
如果你的表没有单一的唯一标识字段,可以用多个字段组合来排序和筛选:
Dim myQuery As String myQuery = "SELECT TOP 5 * " & _ "FROM Tasks " & _ "WHERE (TaskName, CreatedDate) NOT IN (SELECT TOP 5 TaskName, CreatedDate FROM Tasks ORDER BY TaskName, CreatedDate) " & _ "ORDER BY TaskName, CreatedDate;"
关键注意点
- 必须加
ORDER BY:不管是子查询还是主查询,都要使用相同的排序字段,否则跳过的记录是不确定的(Access默认的记录顺序不可靠)。 - 子查询里的字段要能唯一标识每条记录,这样才不会误排除重复数据(如果表有重复记录的话)。
内容的提问来源于stack exchange,提问作者Faheem Ahmad
相关产品推荐
相关产品推荐

