在MS Access中的查询表达式中获取语法错误(缺少运算符)

时间:2019-02-25 03:26:19

标签: sql database ms-access

我收到一条错误消息

  

查询表达式“ r = row_number()超过(按ACell顺序按ACell顺序划分)”中的语法错误(缺少运算符)

在Microsoft Access中;我不知道为什么,但是它可以在Microsoft SQL Server中工作。

我的查询:

select * 
from 
    (select *, r = row_number() over (partition by ACell order by ACell 
    desc) 
    from cellTB) a 
where 
    r <= 5;

请问有人可以帮我吗?

示例数据:cellTB

=================
ACell  |   RNC
=================
1      |   1
-----------------
1      |   2
-----------------
1      |   3
-----------------
1      |   4 
-----------------
1      |   5
-----------------
1      |   6
-----------------
2      |   1
-----------------
2      |   2
-----------------
2      |   3
-----------------
2      |   4
-----------------
2      |   5
-----------------
2      |   6

我想从MC Access中重复的ACell中仅选择前5名。

2 个答案:

答案 0 :(得分:1)

您的代码是 T-SQL 。对于 Access SQL ,例如,您可以使用我以前发布过几次的 RowNumber 函数:

Sequential row numbers

答案 1 :(得分:1)

MS Access不支持row_number()(这只是切换到另一个数据库的众多原因之一)。一种执行所需操作的方法是使用相关子查询:

select c.* 
from cellTB as c
where (select count(*)
       from cellTb as c2
       where c2.Acell = c.Acell and
             c2.id <= c.id  -- this is the primary key column
      ) <= 5;

这假定您的表具有主键,在此示例中该主键称为id