为什么 Select * 只有 return 组中的第一条记录?
Why Select * Only return the first record in a group?
我正在研究 SQL 语句中的 Group by
和 Having
子句。在下面的页面中,我想要的是所有国家在数据库中包含超过5个客户的客户。
所以我用
SELECT *
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
在https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_having
但是这个select只是returns组中的第一条记录,并不是组中的所有记录。为什么?
But select only returns the first record in the group, not all records in the group. Why?
因为每组一行是 GROUP BY
所做的。
做您想做的事情的方法是找出哪些国家/地区的客户超过 5 个,然后 return 来自这些国家/地区的所有记录:
SELECT * FROM Customers WHERE Country IN
(SELECT Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 5)
我正在研究 SQL 语句中的 Group by
和 Having
子句。在下面的页面中,我想要的是所有国家在数据库中包含超过5个客户的客户。
所以我用
SELECT *
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
在https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_having
但是这个select只是returns组中的第一条记录,并不是组中的所有记录。为什么?
But select only returns the first record in the group, not all records in the group. Why?
因为每组一行是 GROUP BY
所做的。
做您想做的事情的方法是找出哪些国家/地区的客户超过 5 个,然后 return 来自这些国家/地区的所有记录:
SELECT * FROM Customers WHERE Country IN
(SELECT Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 5)