Oracle ORA-00979: not a GROUP BY expression 分组查询报错.

原创
03/20 10:37
阅读数 2.8K

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后端功能。

https://gitee.com/automvc/bee

Java快速编程, 让Java的开发速度超过php和Rails。

更快的开发Java Web的新组合:
Bee+Spring+SpringMVC
包括仅分库多数据源实例

更快的开发Spring Cloud微服务的新组合:
Bee + Spring Boot

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部