子查询为空时通过??0自动赋值为0会导致主表别名消失 返回

SqlSugar 沟通中
4 473

1.含??0,生成的sql主表会缺少别名`o`

o.ShouldExpendAmount==

    (SqlFunc.Subqueryable<FinanceThirdPartyOrderApplyPayEntity>()

        .Where(x => x.ThirdPartyOrderId == o.Id)

        .Where(x => x.IsApproved == true)

        .Sum(x => x.Amount)??0)

2.不含??0,生成的sql主表会正常生成别名`o`,但子查询实际数据为null,无法正常比较数字是否相等

o.ShouldExpendAmount==

    SqlFunc.Subqueryable<FinanceThirdPartyOrderApplyPayEntity>()

        .Where(x => x.ThirdPartyOrderId == o.Id)

        .Where(x => x.IsApproved == true)

        .Sum(x => x.Amount)


已升级最新版本SqlSugarCore包


热忱回答4

  • 测试了一下其他的方法,子查询外包一层其他的SqlFunc方法,也会导致主表别名不生成

    0 回复
  • 改成

      .Sum(x => x.Amount??0) 

    0 回复
  • fate sta fate sta VIP0
    2026/1/22

    加到里面

    0 回复
  • @fate stay night:当子表中的数据为空时,使用.Sum(x => x.Amount??0) 这种方式,子表汇总结果还是null,而不是预期的0

    0 回复