2010-05-04 1 views
0

약 200k 개의 주소가있는 테이블이 있습니다. 일부는 비활성 상태이고 다른 일부는 활성 상태입니다. 비활성 상태는 활성 상태의 상태와 중복됩니다. 일부는 활동중인 사람의 주소 _3 (커뮤니티 이름)을 가지고 있지 않지만 일부 비활성 된 주소는 주소 _3을 가지고 있습니다. 비활성 주소 _3이 (가) 활성 상태 인 중복 일치로 있어야합니다. 나는 구조와 고투하고있다. 누구든지 도와 줄 수 있습니까?sql newbi - 비활성 dup 레코드의 주소 _3을 활성 주소 _3에 복사해야합니다.

•이 (기존의 테이블에서 DDL을 재사용하여) 빈 테이블을 만듭니다

+2

정보가 충분하지 않습니다. 활성 레코드에 복제본을 어떻게 일치시킬 수 있습니까? 비활성 상태 레코드의 타임 스탬프가 있습니까? 아니면 여러 비활성 레코드의 address_3이 서로 다른 경우 사용할 주소를 선택할 수 있습니까? –

+0

pkey id는 일련 번호입니다. 속임수를 표시 할 때 address1, address2, city, state, zip별로 그룹화하고 최대 ID를 유지하고 다른 모든 ID를 활성으로 설정했습니다. = false. 모두 생성시 타임 스탬프가 적용됩니다. 여러 개의 주소 3이있는 경우 비활성 주소의 최대 ID를 선택할 수 있습니다. – Parker

답변

1

우리가 그룹화, 내가 할 수있는 분야라고 ADDRESS_1 또는 무언가가 있다고 가정.
• address_3이 NULL이 아닌 행을 테이블에 채우고 GROUP BY를 적절한 열로 설정하십시오 (아래 그림 참조).

올바른 데이터가 있는지 확인하려면 INSERT없이 SELECT를 실행합니다.

INSERT INTO second_addresses_table 
SELECT 
    a.address_1, 
    -- #other columns... 
    a.address_3, 
    TRUE -- #default to Active = TRUE 
FROM 
    first_addresses_table a 
WHERE 
    a.address_3 IS NOT NULL 
GROUP BY 
    a.address_1, 
    -- #other columns... 
    a.address_3