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

左连接查询求和时无数据行丢失,如何显示为0?

左连接聚合后无资产玩家不显示的解决方法

问题根源

问题出在缺少GROUP BY分组子句,而非ON子句过滤数据。当使用SUM()或TOTAL()这类聚合函数时,若未指定分组规则,SQL会将整个查询结果合并为一个分组计算,最终只返回一行汇总结果——这就导致无资产的bar玩家被“合并消失”了,因为它对应的amount是NULL,不会单独形成一行结果。

修正后的查询语句

通过添加GROUP BY按玩家维度分组,再配合COALESCE将聚合后的NULL值转为0,就能让无资产的玩家正常显示0资产:

SELECT 
  players.nickname, 
  COALESCE(TOTAL(possessions.amount), 0) AS total_amount
FROM players 
LEFT JOIN possessions ON possessions.player_id = players.id
GROUP BY players.id, players.nickname

关键说明

  • GROUP BY players.id, players.nickname:按每个玩家的唯一ID和昵称分组,保证每个玩家的资产被单独计算,不会被合并
  • COALESCE(TOTAL(possessions.amount), 0):当玩家没有关联的资产记录时,TOTAL()返回NULL,COALESCE会将这个NULL替换为0,满足显示需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:26:12