두 개의 테이블이 있습니다. 테이블 1에는 약 75 만 개의 행이 있고 테이블 2에는 4 백만 개의 행이 있습니다. 표 2에는 내가 관심있는 추가 ID 필드가 있으므로 표 2에 750,000 개의 표 1 레코드가 있는지 확인하는 쿼리를 작성하려고합니다. 표 2에있는 표 1의 모든 행에 대해 동일한 SSN을 기반으로 한 각 ID. 다음 쿼리를 시도했습니다.
SELECT distinct b.UID, a.*
FROM [Analysis].[dbo].[Table1] A, [Proteus_8_2].dbo.Table2 B
where a.ssn = b.ssn
출력에서 750,000 행을 얻는 대신 540 만개의 레코드를 얻습니다. 내가 어디로 잘못 가고 있니? 도와주세요?
b.UID가 2 열의 고유 필드 인 경우 선택한 모든 행을 요청합니다.
또한 SSN이 테이블 1에서 고유하지 않은 경우 테이블 2의 총 행 수보다 더 높은 행 수를 얻을 수 있습니다.
표 2에서 원하는 것을 다시 고려해야합니다.
편집하다
ssn 및 uid의 카디널리티가 1 : 1 인 경우, 즉 모든 고유 ssn에 단일 고유 uid가있는 경우 표 2에서 ssn이 발견 될 때 ssn 및 uid의 고유 한 조합을 반환하도록 시도 할 수 있습니다.
select distinct
a.ssn,b.[UID]
from [Analysis].[dbo].[Table1] a
cross apply
( select top 1 [uid] from [Proteus_8_2].[dbo].[Table2] where ssn = a.ssn ) b
where b.[UID] is not null
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다