【发布时间】:2013-09-04 06:59:30
【问题描述】:
我正在使用示例database,并且我想在表Customers 和Orders 上编写一个查询,该查询会提供所有已下达2 个以上订单的客户。虽然我通过查询实现了这一点:
Select Customers.*
From Customers
Where Customers.CustomerID IN(
Select Orders.CustomerID
From Orders
Group by Orders.CustomerID
Having count(*)>2
);
我不明白为什么要查询:
SELECT Customers.*
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID
GROUP BY Customers.CustomerID
HAVING COUNT(*)>2;
无法给出相同的结果。来自数据库的消息是:
“无法对使用 '*'(客户)选择的字段进行分组。”
我觉得它应该可以工作,因为Customers.CustomerID 包含在Select 语句的要求列中。有什么问题,我如何修改第二个查询才能工作,即使它执行了可能是多余的语句?
【问题讨论】: