当前位置:数据库 > MySQL >>

mysql group by怎么使用的?

以前用的是oracle和sql server 例如: SELECT create_year, userno , sum(sal) FROM user GROUP BY userno 这样一条语句 在oracle 或sql server肯定是语法错误 因为group by 少了 create_year,可是mysql却没问题正常执行,不晓得为什么?
追问:就是类似于 给 create_year自动改成了 MIN(create_year)   ?
答案:例子  aa表       a          b
                  123        10
                  123        12
                   1234       11
                   1234         14
首先 group 是用来分组的  不是过滤重复项的。重复项删除语句 DISTINCT用这个 。 select  DISTINCT(a) from aa
结果就是     a
                  123
                    1234

group by用来分组的
select a, sum(b) from aa group by a 
sum意思是总和。结果就是
     a         b
    123      22
    1234    25
语句的目的是以a为目标 需要知道 相同名字的物品   在b列一共有多少数量总和
select a,count(b)  from aa group by a 
count 意思行数总和   结果就是
      a         b
    123      2
    1234    2
语句目的是  相同名字的物品 一共有几行
其他:mysql group by userno类似去重复,默认保留create_year第一条,所以保留的是by userno下面create_year第一条,记录的sum(sal) 只有在分组统计中才会使用group by ,这个分组统计有两个涵义:第一必须是分组,不以组归类就无所谓group by,group by的意思就是以组为单位。第二,必须是计算,而且必须是按组计算。
如
计算每个班级多少人:
select class,count(*) from students group by class;按班级计算,每个班级有多少人。(正确)
select class,grade from students group by class;(错)没有统计计算 嗯,是没问题呀,这在mysql里是正常的。 

上一个:求MYSQL中某字段内的重复数据
下一个:mysql语句错误

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,