我正在使用MySQL classicmodels数据库.以下查询工作正常(请注意where子句)
select
customers.customerNumber as 'Customer ID',
customers.customerName as 'Customer Name',
count(orders.orderNumber) as 'Total Orders Placed'
from customers
left join orders on customers.customerNumber = orders.customerNumber
where customers.customerNumber > 200
group by
customers.customerNumber
order by
3 asc
Run Code Online (Sandbox Code Playgroud)
但以下结果会导致错误.目的是仅显示已生成超过3个订单的结果行集中的客户.我究竟做错了什么?
select
customers.customerNumber as 'Customer ID',
customers.customerName as 'Customer Name',
count(orders.orderNumber) as 'Total Orders Placed'
from customers
left join orders on customers.customerNumber = orders.customerNumber
where count(orders.orderNumber) > 3
group by
customers.customerNumber
order by
3 asc
Run Code Online (Sandbox Code Playgroud)
MySQL错误是:错误代码:1111.无效使用组功能
聚合函数(COUNT(), AVG(), SUM(),etc)不能出现在WHERE子句中,因为它们的计算时间.相反,它们属于一个HAVING条款:
select
customers.customerNumber as 'Customer ID',
customers.customerName as 'Customer Name',
count(orders.orderNumber) as 'Total Orders Placed'
from customers
left join orders on customers.customerNumber = orders.customerNumber
group by
customers.customerNumber
HAVING count(orders.orderNumber) > 3
order by
3 asc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12311 次 |
| 最近记录: |