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) ?
以前用的是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语句错误