读书人

right join 的奇怪现象,该如何解决

发布时间: 2013-01-27 13:56:17 作者: rapoo

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中去

[解决办法]
引用:
刚才有事去忙了SQL code?12345678910111213141516171819202122232425262728293031323334353637383940414243444546------------------------------ Author :DBA_Huangzj(……

弱弱的问一句,最上面的那些注释是怎么弄出来的?
[解决办法]

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

读书人网 >SQL Server

热点推荐