mysql - HAVING和GROUP BY一起使用时,SQL只做聚合吗?

标签 mysql

在下面的声明中:

SELECT CustomerID, Country
FROM Customers
GROUP BY Country
HAVING count(CustomerID)>7

我想返回具有 7 个以上客户 ID 的国家/地区的所有客户 ID。但它只为每个国家/地区返回 1 个 ID。

我需要执行以下操作才能获得我想要的内容:

SELECT CustomerID, Country
FROM Customers
WHERE Country in (SELECT Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID)>7)

谁能解释一下为什么?

最佳答案

您可以将其很好地构造为子查询的连接:

SELECT CustomerID 
FROM Customers c
JOIN (
  SELECT Country 
  FROM Customers 
  GROUP BY Country 
  HAVING COUNT(CustomerID) > 7
) c2 on c.Country = c2.Country;

关于mysql - HAVING和GROUP BY一起使用时,SQL只做聚合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45333027/

相关文章:

mysql - 将此 INNER JOIN 转换为 UNION

php - php pdo 内存不足

mysql - 两个相似的mysql查询如何显示不同的结果

复制 ibdata1 文件后 MySql 无法启动

javascript - Electron js不显示来自Mysql的数据

mysql - 在加入它们之前在多个表上使用相同的 where 子句

php - 我想使用 PHP 在菜单中添加和删除项目

mysql - phpMyAdmin 中 MySQL PASSWORD() 的结果与 MySQL CLI 中 PASSWORD() 的结果不同

php - SQL - 您的 SQL 语法有错误吗?

mysql - 从一个表中选择多行,而另一表的计数为