在 MS Access 中的查询表达式中出现语法错误(缺少运算符)
Posted
技术标签:
【中文标题】在 MS Access 中的查询表达式中出现语法错误(缺少运算符)【英文标题】:Getting syntax error (missing operator) in query expression in MS Access 【发布时间】:2019-07-18 10:29:27 【问题描述】:我收到一条错误消息
查询表达式'r = row_number() over (partition by ACell order by ACell desc)'中的语法错误(缺少运算符)
在 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 个。
【问题讨论】:
这是发送到 SQL Server 的传递查询吗?如果不是,则语法不正确,因为 Access 不支持窗口函数 我不知道如何在 Access 中使用这些命令 'r = row_number() over (partition by ACell order by ACell desc)'。 编辑问题以显示示例数据和所需的输出。您需要 Access 查询对象吗? @June7 我已经输入了我想要从这个查询中得到的示例数据和输出。 【参考方案1】:你的代码是 T-SQL。例如,对于 Access SQL,您可以使用我之前多次发布的 RowNumber 函数:
Sequential row numbers
【讨论】:
【参考方案2】: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
。
【讨论】:
以上是关于在 MS Access 中的查询表达式中出现语法错误(缺少运算符)的主要内容,如果未能解决你的问题,请参考以下文章