You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL SELECT查询如何过滤due_balance为0的记录

你修改后的查询不生效,是因为SQL的执行逻辑导致的:WHERE子句会在分组聚合运算之前执行,此时due_balance这个别名还没有被计算生成,同时聚合函数的运算结果也不能直接放在WHERE条件中做过滤,针对聚合后的结果过滤需要使用HAVING子句。

正确的查询语句如下:

SELECT basket_id
     , b.amount_due - SUM(p.amount_paid) as due_balance
FROM basket_due b
  LEFT JOIN basket_payment p USING (basket_id)
WHERE b.customer_id = 4
GROUP BY customer_id, basket_id
HAVING due_balance > 0
ORDER BY basket_id desc

如果你的数据库不支持在HAVING子句中直接使用SELECT定义的别名,也可以把条件写成HAVING b.amount_due - SUM(p.amount_paid) > 0,执行效果完全一致。

内容的提问来源于stack exchange,提问作者user3733831

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:09:04