2010-04-23 3 views
0

locationID를 통해 연결된 두 개의 테이블 tableA와 tableB가 있습니다.복제본을 제거하고 복제본에 연결된 ID를 업데이트하십시오.

TableA에는 다른 시간 (즉, 고유 한)의 각 레코드에 대한 설문 조사 정보가 있지만 TableB는 순전히 위치 정보가 있습니다. 그러나 TableB에는 많은 중복이 있지만 각 테이블에는 TableA에 항목이있는 고유 한 locationID가 있습니다. 나는 TableB에서 중복 제거에 대한 많은 게시물을 찾았지만 중복 제거되면 TableB의 고유 위치에 연결되도록 TableA의 locationID를 어떻게 업데이트 할 수 있습니까?

도움이 많이 감사합니다!

답변

1

먼저 당신이 가지고 : 당신이 전체 그룹이있는 경우는 즉시 삭제에 대한 것, 또는

UPDATE TableA 
SET locationID = foundLocationID1 
WHERE locationID = foundLocationID2 

: 당신이 TableB의에서 삭제하기 전에 따라서, 당신은 TableA의를 업데이트 할 수 있습니다 TableB에서 중복을 제거하기 전에 TableA를 업데이트하십시오. 그렇지 않다면 정보를 잃을 것입니다. 그 후

는, 하나 개의 필드에서 동일한 테이블 B의 모든 중복을 모두 그들 중 하나 LocationID를 선택하고

을 (의이 LocationDescription을 가정 해 봅시다). MIN Location ID를 말하자.

그런 다음 해당 MinID로 tableA를 업데이트 한 다음 TableB에서 중복을 매우 쉽게 (NOT in과 함께) 제거하십시오.

Here's 예 :

이 후

TableA:         Table B 

Location ID        LocationId LocationDescription 
    1          1  Neuquen 
    2          2  Cipolletti 
    3          3  Neuquen 
    4          4  Cipolletti 
    5          5  Neuquen 

UPDATE TableA 
SET locationID=TABLEBAUX.UniqueID 
FROM TableA 
INNER JOIN 
(
SELECT UniqueID, LocationID 
FROM 
(SELECT MIN(LocationID) as UniqueID,LocationDescription 
FROM TableB 
GROUP BY LocationDescription) TEMP 
INNER JOIN TableB 
ON TEMP.LocationDescription=TABLEB.LocationDescription) TABLEBAUX 
ON TableA.LocationID=TABLEBAUX.LocationID 

DELETE FROM TableB 
WHERE LocationID NOT in (SELECT LocationID FROM TABLEA) 

을 Asumming이 얻을 :

내가 필요 정확히
TableA:         Table B 

Location ID        LocationId LocationDescription 
    1          1  Neuquen 
    2          2  Cipolletti 
    1          
    2          
    1          
+0

, 감사합니다! – julian

+0

도와 드리겠습니다. – Claudia

0

복제본을 찾으면 적어도 두 개의 locationID을 알고 있습니다. 모든

UPDATE TableA 
SET locationID = foundLocationID1 
WHERE locationID IN (foundLocationID2, foundLocationID3, foundLocationID4) 
관련 문제