在使用group by时碰到的问题
(1)选择列表中的列无效,因为该列没有包含在聚合函数或者group by子句中。
select id,name,count(0) as cx from student group by id order by cx desc
其中name会无效,因为该列没有包含在聚合函数或者group by子句当中。也就是说:在select需要查询语句中选中的字段,必须出现在group by子句中。我们还需注意的是:group by和order by一起使用时,order by要在group by的后面。
(2)每个 group by 表达式必须至少包含一个不是外部引用的列。
select count(0),nothing from student group by nothing having name='echodemo'
出错的原因是因为group by语句所跟的内容一般是数据表中的字段或者数据表的表达式,因为上边的句子中在group by后边使用的是数据表中不存在的字段且也不是数据表的表达式,为外部实例,所以才会报上变得错误。