我对以下问题感到困惑。我正在做一个左外连接,它返回的行数多于没有连接数。
select COUNT(*) specimen_id from QuickLabDump a
left outer join PracticeandPhysician c
on (a.[Requesting Physician]=c.doctorfirstname+' '+c.DOCTORLASTNAME
and a.[practice code]=c.practicecode)
where
DATEPART(mm, [DATE entered]) =12
and
DATEPART(yy, [DATE entered])=2011
收益108387
,而
select COUNT(*) specimen_id from QuickLabDump a
where
DATEPART(mm, [DATE entered]) =12
and
DATEPART(yy, [DATE entered])=2011
收益108357
他们不应该返回相同数量的行吗?
答案 0 :(得分:8)
第二个表在主表中每1行可能有更多行,即点
答案 1 :(得分:5)
当联接的PracticeandPhysician
表包含QuickLabDump
表中某个键的多行时,会发生这种情况。
此查询
select COUNT(*), c.practicecode, a.[Requesting Physician],speciment_id
from QuickLabDump a
left outer join PracticeandPhysician c
on (a.[Requesting Physician]=c.doctorfirstname+' '+c.DOCTORLASTNAME
and a.[practice code]=c.practicecode)
where
DATEPART(mm, [DATE entered]) =12
and
DATEPART(yy, [DATE entered])=2011
GROUP BY c.practicecode, a.[Requesting Physician], speciment_id
HAVING COUNT(*) > 1
应该告诉你哪些行有重复。
答案 2 :(得分:3)
令人困惑,是的,但可以理解。
如果要查看第一个不在第二个查询中的查询所获得的内容,请选择第一个结果集中不在第二个结果集中的记录。
您也可以尝试将DISTINCT添加到您的查询中。
答案 3 :(得分:1)
PractiveandPhysician
表格中有重复项。
只有当您加入一个永远不会获得更多记录的唯一值时,才会这样做。