WHERE子句中的SQL Access COUNT

时间:2014-01-06 20:02:48

标签: sql ms-access

我正在尝试执行查询以返回只有1个交叉引用号的订单。

这样的事情(字段名称和表格改为保护无辜者;-P):

SELECT ordernum FROM orders WHERE (COUNT(orderref) = 1) ORDER BY ordernum;

问题是,在使用Access的WHERE子句中无法使用聚合函数(不确定它是否在普通SQL中允许)。

如何使用Access SQL实现此目的?

4 个答案:

答案 0 :(得分:5)

计数(*)必须在HAVING子句中,因为它是计算的。此外,您缺少GROUP BY子句。

-- Updated statement
SELECT ordernum, COUNT(orderref) as Total
FROM orders 
GROUP BY ordernum 
HAVING COUNT(orderref) = 1 
ORDER BY ordernum

有人通过电子邮件告诉我,MS Access不支持HAVING子句。这对我来说是新闻。很久以前我获得了MOS ACCESS认证。

让我们使用Northwind数据库进行MS Access 2007.我更改了语法,因为列名不同。但结果是一样的。

enter image description here

enter image description here

答案 1 :(得分:3)

我不确定它是否在Access中工作但尝试类似这样的

SELECT ordernum FROM orders group by orderref having count(*) = 1 ORDER BY ordernum;

答案 2 :(得分:0)

尝试使用SQL查询:

SELECT ordernum,count(ordernum) as countorders FROM orders
GROUP BY ordernum
HAVING countorders = 1
ORDER BY ordernum;

答案 3 :(得分:0)

试试这个,

 SELECT ordernum, count(orderref) 
 FROM    orders 
 ORDER BY ordernum, having count(orderref)=1;