左外连接返回的行数多于无连接数

l--*_*''' 2 sql sql-server sql-server-2008

我对以下问题感到困惑.我正在做一个左外连接,它返回的行多于无连接.

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
Run Code Online (Sandbox Code Playgroud)

产量 108387

select COUNT(*) specimen_id from QuickLabDump a
 where 
DATEPART(mm, [DATE entered]) =12
and
DATEPART(yy, [DATE entered])=2011
Run Code Online (Sandbox Code Playgroud)

产量 108357

他们不应该返回相同数量的行吗?

Ole*_*Dok 8

第二个表可能在主表中每1行有更多行,这就是重点


das*_*ght 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
Run Code Online (Sandbox Code Playgroud)

应该告诉你哪些行有重复.