如何在Mysql中从另一张表中添加列到一个表格?

27
我有两个表格。
  1. table1
  2. table2
table1含有两列。
  1. id
  2. Name
table2含有两列。
  1. id
  2. Age
我想把table2中的Age列添加到table1中(通过WHERE table1.id = table2.id匹配)。
然后,table1应该包含三列。
  1. id
  2. Name
  3. Age
2个回答

107

首先,添加具有适当数据类型的列。

ALTER TABLE table1 ADD COLUMN Age TINYINT UNSIGNED NOT NULL DEFAULT 0;

然后更新表格,以便值被“传输”。

UPDATE table1 t1
INNER JOIN tabel2 t2 ON t1.id = t2.id 
SET t1.Age = t2.Age

使用t1t2的优势是什么? - Gathide
1
@Gathide 减少打字 :) 我养成了一个习惯,即在选择子句中始终添加表名到列中。短别名在这里非常有帮助。 - fancyPants
这对我不起作用...我还应该注意到,我没有修改表格,这是你的第一行,因为我已经有了现有的列..我不知道是否会引起问题...对此有什么理论吗? - Adan Vivero

15

首先在table1中添加Age列

ALTER TABLE table1 ADD COLUMN Age TINYINT UNSIGNED DEFAULT 0;

然后使用以下查询更新该列:

UPDATE table1 t1
INNER JOIN Tabel2 t2 ON t1.id = t2.id 
SET t1.age = t2.age;

23
好的,当然可以抄我的答案。 - fancyPants
6
时间戳显示Saharsh先提交了他的答案。 - Martin Schapendonk
7
@fancyPants,你看过这个编辑吗?他只是加了一个分号(而你的解决方案甚至没有)。你们两个在同一分钟内给出了相同的答案。这种情况时有发生,不要介意。 - Martin Schapendonk
3
FYI,当您在前5分钟内编辑答案时,以后将无法查看它。尝试在下一个回答中进行编辑,前5分钟内将没有“编辑于<日期时间>”的链接。但是,当然可以为他辩护。很快每个人都会先写一个“asdf”答案,然后再编辑,只是为了成为第一个回答者。 - fancyPants
5
如果那是真的,那么这将是一种非常卑鄙的办法来劫持第一个答案,我会收回我之前说过的一切话。 - Martin Schapendonk
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接