更新在另一个表上具有重复项的字段

时间:2014-07-22 08:20:22

标签: mysql sql

所以我有一个带有外键TeamID的分数表

ID     TeamID    Score   Month
1      1         100     1
2      2         90      2
3      2         80      3

在桌面团队中有重复这样的内容:

ID     TeamName
1      Team A
2      Team A

我想将得分表上的TeamID字段更新为团队表上的第一个出现,这样我就可以安全地删除团队表上的重复项,例如:

ID     TeamID    Score   Month
1      1         100     1
2      1         90      2
3      1         80      3

如何在不手动更新每个ID的情况下如何做到这一点?

3 个答案:

答案 0 :(得分:1)

select t1.id, t2.id as newId
from team t1 
     join (select min(id) as id, 
                 TeamName 
           from team
           group by TeamName) t2 on t1.TeamName=t2.TeamName

查询将返回哪个id应替换为新ID。在分数表中使用它来更新ID

答案 1 :(得分:0)

试试这个

UPDATE score SET TeamID = (SELECT ID from Team ORDER BY ID limit 1);

答案 2 :(得分:0)

这应该对你有用

UPDATE scores SET TeamID = (SELECT MIN(t3.ID) from Team t2 JOIN Team t3 ON t2.TeamName = t3.TeamName WHERE t2.ID = scores.TeamID)