來自: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 的世界實際上是層級分明的等級社會,將低階概念的屬性用在高階概念上會致使秩序的混亂,這是不容許的。此時我相信你們都明白:爲何聚合後不能再引用原表中的列 。對象