2017-06-13 114 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

具有(聚合函数条件处理)