MySQL 的最简单形式、最容易理解的形式是:
SELECT column FROM table WHERE condition
然后,人们希望能对结果进行分组,于是出现了聚集函数,如查询总积分超过60的人:
SELECT name, SUM(credit) FROM creditlog WHERE condition GROUP BY name HAVING SUM(credit) > 60 ;
它其实是两步操作:
1. SELECT name, credit FROM creditlog WHERE condition;
2. 对第一步的结果,依据name分组,求和
3. 针对第二步的求和结果做过滤
1 和 2 是一种流式计算的关系。 MySQL 为了一次性解决基本查询和流式计算的问题,就发明了GroupBy,为了对分组的结果进行类似WHERE的过滤,就发明了Having,其实它本质就是一个WHERE条件,只不过是为了避免关键词重复而已。
MySQL表达这种2层流式计算还算简便,但当我们需要用它来处理3层、4层、N层的流式计算时,MySQL 语句就会写得复杂无比。我认为,这是MySQL语言设计的缺陷。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 技术分享 | 一文了解 MySQL Optimizer Trace 的神奇功效
作者:Mutlis CSDN & 阿里云 & 知乎 等平台优质作者,擅长Oracle & MySQL等主流数据库系统的维护和管理等 本文来源:原创投稿 * 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 前…