如果我写
SELECT continent FROM world GROUP BY continent HAVING sum(population) >= 100000000
它将返回总金额超过 1 亿的所有大陆。但如果我像这样省略 GROUP BY
SELECT continent FROM world HAVING sum(population) >= 100000000
它只会返回一个大陆(在本例中为亚洲)。
这是为什么?
当你没有的时候GROUP BY
,聚合函数如SUM()
对整个表进行操作,将其视为一个大组。这就是为什么您只得到一行结果的原因。
当您使用聚合函数时,返回集合中的任何列在技术上都是无效的SELECT
列出除以下内容之外的其他内容GROUP BY
子句,因此您的查询不是有效的 SQL。一些数据库,例如 MySQL,允许返回其他列作为扩展;在这种情况下,它会从组中的任意行中选择值。如果没有GROUP BY
子句,整个表是一组,所以你得到continent
表中某个随机行的列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)