2016-12-05 39 views
0

我有2代表的表替换重复行 表1:团队柱Teamid,teamName其具有一些重复 像在一个表中,并在具有外键参照第一表

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

表2:其列ID UsedTeams,请求ID,teamdID(外键球队(teamid))

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

我想是从球队表中删除重复的球队喜欢在二手队以teamid 2移除组,也该行有teamid等于到2肖ULD可以更新到teamid 1

+1

提示今天:唯一约束! – jarlh

回答

1

的CTE和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 
相关问题