Oracle ORA-00979: not a GROUP BY expression.
select * from orders
图1 orders表所有数据图
select userid,name,count(*),sum(total) from orders group by userid
用这个查询, 就会报00979的错误. 原因是, name字段不是分组的字段, 不能用select查询出来.
select id,userid,count(*),max(total),min(total) from orders group by userid
这个查询语句,是可以在mysql中查询的(Oracle报id 列不是分组的), 但看下结果, id列有意义吗?
因为我们是用userid分组的, 从 图1 orders表所有数据图,可以看出, 有Bee 和 bee 两组(区分大小写). userid为Bee对应的id有两个, userid为bee对应的id有三个,
而在mysql中查询的id只有一个,它是不准确的. id所对应的值是total最小的记录id,还是 total最大记录的id呢?
所以总结如下:
分组后,select直接显示的字段,只能是用于分组的字段;其它字段只能用于统计。
--------------------------------------------------------------------------------------------
如果,你是一个程序员,不想只写增删改查,请了解更多快速开发Java web后端功能。
Java快速编程, 让Java的开发速度超过php和Rails。
更快的开发Java Web的新组合:
Bee+Spring+SpringMVC
包括仅分库多数据源实例
更快的开发Spring Cloud微服务的新组合:
Bee + Spring Boot