【转载】为何聚合后不能再引用原表中的列

来自:https://www.cnblogs.com/youzhibing/p/11516154.htmlhtml

为何聚合后不能再引用原表中的列

  不少人都知道聚合查询的限制,可是不多有人能正确地理解为何会有这样的约束。表 tbl_student_class 中的 cname 存储的是每位学生的班级信息,但须要注意的是,这里的 cname 只是每一个学生的属性,并非小组的属性,而 GROUP BY 又是聚合操做,操做的对象就是由多个学生组成的小组,所以,小组的属性只能是平均或者总和等统计性质的属性,以下图htm

  询问每一个学生的 cname 是能够的,可是询问由多个学生组成的小组的 cname 就没有意义了。对于小组来讲,只有"一共多少学生"或者"最大学号是多少?"这样的问法才是有意义的。强行将适用于个体的属性套用于团体之上,纯粹是一种分类错误;而 GROUP BY 的做用是将一个个元素划分红若干个子集,使用 GROUP BY 聚合以后,SQL 的操做对象便由 0 阶的"行"变为了 1 阶的"行的集合",此时,行的属性便不能使用了。SQL 的世界实际上是层级分明的等级社会,将低阶概念的属性用在高阶概念上会致使秩序的混乱,这是不容许的。此时我相信你们都明白:为何聚合后不能再引用原表中的列 。对象

相关文章
相关标签/搜索