如何从 Mysql 中的另一个表向表中添加列?

Posted

技术标签:

【中文标题】如何从 Mysql 中的另一个表向表中添加列?【英文标题】:How to add a column to a table from another table in Mysql? 【发布时间】:2015-02-07 04:19:43 【问题描述】:

我有两张桌子

    表1 表2

Tabel1 包含 2 列

    身份证 姓名

Tabel2 包含 2 列

    身份证 年龄

A 想将 table2 中的 age 列添加到 table1 (WHERE table1.id = table2.id)

那么 table1 应该包含 3 列

    身份证 姓名 年龄

【问题讨论】:

【参考方案1】:

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

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 少打字 :) 例如,我养成了始终将表名添加到 select 子句中的列的习惯。短别名在这里很有帮助。【参考方案2】:

首先在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;

【讨论】:

是的,复制我的答案。 @fancyPants 时间戳表明 Saharsh 首先提交了他的答案。 @fancyPants 你看过编辑吗?他只添加了一个分号(您的解决方案甚至没有)。你们两个在同一分钟内给出了相同的答案。它发生了。没有难过的感觉。 @MartinSchapendonk 仅供参考,当您在前 5 分钟内编辑答案时,您以后无法查看。继续,尝试下一个答案,前 5 分钟不会有 edited <datetime> 链接。但是,当然,为他辩护。很快,每个人都会先写一个“asdf”答案,然后再进行编辑,以成为第一个回答的人。 @fancyPants 如果这是真的,那将是一种非常讨厌的劫持第一个答案的方式,我会收回我之前所说的一切。

以上是关于如何从 Mysql 中的另一个表向表中添加列?的主要内容,如果未能解决你的问题,请参考以下文章

使用默认值向表中添加列

如何解析列并向表中添加更多记录?

如何允许通过 Microsoft Access 中的组合框向表中添加值?

向表中添加了列,但链接图表未使用新列数据更新

如何避免向表中添加时间戳字段? [关闭]

添加列通过从sql Server中的另一个表中选择所有项目来选择表