我正在使用示例数据库,我想在表上编写一个查询,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
声明中要求的列中。有什么问题,我如何修改第二个查询才能工作,即使它执行了可能是多余的语句?