Mysql里where语句里不能使用SUM聚合函数筛选怎么办?

现有这样一个需求:

在一个电商订单管理平台中,我想查看所有已付款订单中,哪些订单是有部分退款的。

一开始思路是这样是没错的:

在订单详情表里的num数量和大于退款详情表里的num数量之和即可,也就是SUM(nums)>SUM(num)。

为了达成这样的目的,我一开始在MySql里直接这样运行了,代码如下:

SELECT 
soo.order_bn, 
sooi.order_id,
sooi.nums,
sori.num
from sdb_ome_orders soo 
left join sdb_ome_order_items sooi on sooi.order_id = soo.order_id 
left join sdb_ome_reship sor on sor.order_id = soo.order_id 
left join sdb_ome_reship_items sori on sori.reship_id = sor.reship_id 
WHERE soo.shop_id = '52759ae5ccd9d10b9ad763cb78ec2c77'
and SUM(sooi.nums) > SUM(sori.num); 

但是运行的结果发生了如下报错:

SQL Error [1111] [HY000]: Invalid use of group function。

单独注释掉最后一条,运行其他的是可以出来结果的。

所以where语句后面是不能使用sum聚合函数的,怎么办呢?

你可以单独用订单表连接订单明细表,把查询出来的结果定义为表A,将A里的nums求和设为a,

然后用订单表连接退款明细表,将查询出来的结果定义为表B,将B里的num求和设为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的小辣条

您的打赏将是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值