2017-06-13 68 views
-1

我想向我的語句添加WHERE子句,但問題在於,當我添加WHERE子句時,出現「無效使用組功能」錯誤。MySql,與WHERE子句一起使用

我還嘗試替換WHERE子句並將條件寫入 JOIN .. ON部分,但錯誤仍然存​​在。

我想添加條件,以便只返回行「SUM(res.ReservationID)= 2」。

-- works but we only want to get the rows in which the SUM = 2 
SELECT ctr.ID, ctr.LastName, ctr.FirstName, SUM(res.ReservationID) as ReservierteSitze 
FROM customer as ctr 
INNER JOIN reservation AS res ON ctr.ID = res.CustomerID 
Group by ctr.ID; 
+1

這就是HAVING子句的用途。 –

+0

我明白了,它可以直接使用!但爲什麼我必須使用'HAVING'而不是'WHERE'? – normalUser221

+2

因爲WHERE是在GROUP BY之前評估的,所以你不能在那裏使用聚合函數。 –

回答

1
SELECT ctr.ID, ctr.LastName, ctr.FirstName, SUM(res.ReservationID) as ReservierteSitze 
FROM customer as ctr 
INNER JOIN reservation AS res ON ctr.ID = res.CustomerID 
Group by ctr.ID 
HAVING ReservierteSitze = 2; 

HAVING就像是其中用於group by子句(適用於集團)

你仍然可以有一個WHERE子句GROUP BY子句之前,但只適用於個人分組前的行。

0

具有(聚合函數條件處理)