2014-01-06 52 views
0

我試圖執行一個查詢來返回他們只有1個交叉引用號碼的訂單。SQL訪問COUNT在WHERE子句

像這樣的東西(字段名和表更改,以保護無辜;-P):

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

的問題是,其總的功能是不可能在WHERE子句中使用Access(不知道它在正常的SQL中是允許的)。

如何使用Access SQL實現此目的?

回答

5

的COUNT(*)必須在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認證。

我們使用MS Access 2007的Northwind數據庫。由於列名不同,我改變了語法。但是,結果是一樣的。

enter image description here

enter image description here

3

我不知道如果在訪問工作,但嘗試這樣的事情

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

嘗試使用SQL查詢:

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

試試這個,

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