回答得很好,补充一点:
group by是按一列(或多列)的值进行分组,可能把多行分到一组。
对于select 列x… group by 列1…语句,列x… 只能是列1…的子集,也就是说,如果group by A,B,那么select A,B,C就是错的,因为出现了group by中没有的C。如果要选择C,那就使用聚集函数(count(数目), sum(和),avg(均值), max(最大值)和min(最小值)),这是在分组内进行相应的计算。如select A , B , max(C) from table group by A , B。
另外,使用了group by,就不能使用where筛选,要实现筛选,是在group by后使用having,注意这是按组进行筛选,不是按行。
说明:这是我的经验,在oracle下的,其他数据库就不清楚了。总之,数据库感觉挺简单的,但是也有很多要注意的细节,尤其是oracle。 |