2014-01-13 2 views
0

나는 다음과 같은 필드로 구성되는 테이블이 : Location_ID 266 LAST_NAME, FIRST_NAME, 생일, 사회 보장 번호 (SSN)업데이트 특정 필드

내가와 병합하려고 동일한 스키마를 포함하는 다른 테이블. 그러나주의해야 할 점은 사용자가 서로 다른 버전의 응용 프로그램으로 인해 두 테이블에 있고 다른 User_ID로 존재할 수 있다는 것입니다. 만약 내가 단순히 그들을 병합했다면, 나는 하나의 Last_Name, First_Name, Birthday, SSN이 그것과 연관된 두 개의 User_ID를 가질 수있는 중복을 얻을 것이다.

Last_Name, First_Name, Birthday 및 SSN과 일치하는 새 데이터 세트를 이전 데이터 세트에 병합하고 해당 항목이없는 경우 새 User_ID를 추가하는 것만하고 싶습니다. 이전 네 가지 제약. 나는 이것을하기위한 적절한 방법에 관해서 손해보고있다. 어떤 제안?

+4

질문 자체에 어려움을 겪고있는 코드를 게시하십시오. – Kermit

+0

은 @FreshPrinceOfSO에 동의해야합니다. 우리가 당신을 도울 수 있기 전에 당신이 먼저하고있는 일을 어떻게 시도하는지 알아야합니다 .... 모든 사람들에게 더 좋은 출발점을 제공합니다. – user2366842

답변

0

나는 다음을 시도 할 것이다. 삽입/업데이트하려는 각 레코드에 대해 일치하는 필드 (First_Name, Last_Name 등)가있는 행이 있는지 먼저 확인하고 일치하는 행이 있으면 업데이트 명령을 실행하고 그렇지 않으면 삽입하십시오.

0

가 여기에 표준 SQL을 사용하여 접근 방식 :

insert into t1(User_ID, Last_Name, First_Name, Birthday, SSN) 
    select User_ID, Last_Name, First_Name, Birthday, SSN 
    from t2 
    where not exists (select 1 
         from t1 
         where t1.Last_Name = t2.Last_Name and 
          t1.First_Name = t2.First_Name and 
          t1.Birthday = t2.Birthday and 
          t1.SSN = t2.SSN 
        ); 

는 SQL을 제공하는 데, 나는 정말이 경우에는 작동하지 않습니다 생각한다. 일반적으로 이와 같은 문제가 발생하면 두 테이블의 내용에 약간 다른 형식이 있습니다. 예를 들어 첫 번째 이니셜이 있고 다른 첫 번째 이니셜이있을 수 있습니다. 또는성에 쉼표가 붙은 접미사가 있고 다른 하나는 쉼표가없는 접미어 일 수 있습니다.