oracle非或组合,Oracle ORA-00979: not a GROUP BY expression 分组查询报错.

Oracle ORA-00979: not a GROUP BY expression.

71380255709e69466ab9c686f936811c.png

select * from orders

900f521fbc154c9cebb4f74e0c63f6a4.png

图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呢?

bab9fee591e9e074148dcb78aa2f9af9.png

所以总结如下:

分组后,select直接显示的字段,只能是用于分组的字段;其它字段只能用于统计。

--------------------------------------------------------------------------------------------

如果,你是一个程序员,不想只写增删改查,请了解更多快速开发Java web后端功能。

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

更快的开发Java Web的新组合:

Bee+Spring+SpringMVC

包括仅分库多数据源实例

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

Bee + Spring Boot

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值