2016-12-05 11 views
0

1 테이블 외래 키 참조를 갖는 테이블에 중복 된 행을 교체 표 1테이블 및 I 2 개 테이블이

Table 1 TeamID | TeamName 
------------------------------------- 
       1  | abc 
       2  | abc 

표 2와 같은 일부 중복 갖는 열 Teamid, teamName와 팀 : 열 ID와 UsedTeams, RequestID가, teamdID (외래 키 팀 (teamid))

Table 2 
ID |Requestid | teamID 
---|-----------|-------- 
1 | 1000  | 1 
2 | 1001  | 2 

내가 원하는 것은 중고 팀에있는 줄도 teamid 2 팀을 제거하고 같은 팀의 테이블에서 중복 팀을 제거하는 것입니다은 teamid 동일있다 ~ 2 쇼 자민련은 1

+1

팁 : 고유 제한 조건을! – jarlh

답변

1

팽창 계수를 teamid을 업데이 트와 OVER -clause는 작업을 단순화하는 데 도움이 : 오늘의

WITH CTE AS 
(
    SELECT t.*, 
      RN = ROW_NUMBER() OVER (PARTITION BY TeamName ORDER BY TeamId), 
      MinTeamId = MIN(TeamId) OVER (PARTITION BY TeamName) 
    FROM Teams t 
) 
UPDATE ut SET ut.TeamId = CTE.MinTeamId 
FROM CTE INNER JOIN UsedTeams ut ON CTE.TeamId = ut.TeamId 
WHERE CTE.RN > 1