right join 的奇怪现象
select isnull(SUM(netPaid),0.00) from dbo.F_AccountEntry a
right join dbo.RPT_resultA41 b
on a.CompanyID=b.CompanyID
and a.AcctID=b.acctid
and b.CompanyID=1 and b.userName='sally_law'
and a.FiscalDateID>-13 and a.FiscalDateID<0
group by b.acctid
如上语句,我的B表在and b.CompanyID=1 and b.userName='sally_law' 条件下 只有66条数据,
但这样出来的如果却有77条之多,什么原因呢,是我的语句有问题吗?
[解决办法]
left join 应该是66条数据吧。right join 会出来一些右表有,但是左表空的数据。right join 查询出来的结果中 左表空的也会算作一条数据。
[解决办法]
right/left join都会添加“额外行”,你如果用inner join那应该就只有66行了,应该考虑是否有必要用外联,而不是随便用。
[解决办法]
语句是没有问题的,只有理解的问题
如果怀疑不对的,把条件写到where中去
[解决办法]
弱弱的问一句,最上面的那些注释是怎么弄出来的?
[解决办法]
SELECT a.acctid,isnull(bb.closingAmtBase,0) closingAmtBase FROM a LEFT JOIN (
SELECT SUM(closingAmtBase) closingAmtBase ,acctid,companyid FROM b
GROUP BY acctid,companyid
) bb ON bb.companyid = a.companyid AND bb.acctid = a.acctid
819506.98
82183207.21
830.00
840.00