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

Left Join查询返回Null而非0的问题解决求助

解决SQL统计id被引用次数的问题

问题分析

你的原SQL存在三个核心问题:

  • 使用SELECT *会返回重复的To列(原表的To和子查询的to),导致结果里的To列数据混乱
  • 子查询的count(*)未指定别名,结果列名不符合预期
  • 未被引用的id对应的统计值为null,未转换为预期的0

修改后的SQL语句

SELECT 
    s.id, 
    s.Name, 
    s.To, 
    COALESCE(j.ref_count, 0) AS Count
FROM sample s
LEFT JOIN (
    SELECT "to", COUNT(*) AS ref_count
    FROM sample
    WHERE "to" != 0  -- 可选:若To=0不算有效引用则添加此条件
    GROUP BY "to"
) j ON j."to" = s.id;

关键修改说明

  1. 明确指定返回列:放弃SELECT *,直接选择原表的id、Name、To,避免重复列造成的数据错误
  2. 给统计值加别名:子查询中给COUNT(*)命名为ref_count,方便主查询清晰引用
  3. 处理空值:用COALESCE(j.ref_count, 0)将未被引用时的null转换为0,匹配预期结果要求
  4. 过滤无效引用(可选):如果To=0代表无目标引用,可在子查询中添加WHERE "to" != 0,避免统计0的情况

执行结果验证

运行修改后的语句,会得到你预期的结果:

id, Name, To, Count
1,  A,    2,  1
2,  B,    0,  2
3,  C,    2,  0
4,  D,    0,  0
5,  E,    1,  0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:20:28