이 질문과 관련된 내용: https://dba.stackexchange.com/questions/103262/joining-multiple-tables-results-in-duplicate-rows/103264
두 개의 테이블에 참여하고 있습니다. 두 테이블은 키를 공유합니다. 사람 테이블에는 기본 키당 하나의 이름이 있지만 이메일 테이블에는 personId당 여러 개의 이메일이 있습니다. 한 사람당 첫 번째 이메일만 표시하고 싶습니다. 현재는 여러 개의 이메일을 가지고 있기 때문에 한 사람당 여러 행을 얻습니다. SQL-Server 2005를 실행하고 있습니다.
편집 : 이것은 T-SQL입니다. 첫 번째 이메일은 말 그대로 1 인당 첫 번째 이메일 행입니다.
편집 2: 제가 보기에 첫 번째 이메일은 SQL이 쿼리를 통해 작동할 때 조인에 표시되는 첫 번째 이메일 행입니다. 어떤 이메일이 표시되는지는 중요하지 않습니다. 하나 이상의 이메일이 표시되지 않는 것만 중요합니다. 이제 좀 더 명확해졌기를 바랍니다.
Table1: Person
Table2: Email
Select Person.PersonName, Email.Email
From person
left join on Person.ID=Email.PersonId;
SELECT
A.PersonName, A.Email
FROM
(
Select Person.PersonName, Email.Email
,ROW_NUMBER() OVER(PARTITION BY Person.ID ORDER BY Email.Email) AS RN
From person
left join Email on Person.ID=Email.PersonId
) A
WHERE A.RN = 1
저는 외부 애플리케이션을 사용하면 더 가독성이 높다고 생각합니다.
Select Person.PersonName, coalesce(Email.Email,'No email found.') as Email
From person
outer apply (
select top(1) Email.Email
from Email
where Person.ID=Email.PersonId
order by <whatever suits you>
) as Email;