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

我有两张桌子

  1. 表1
  2. 表2

Tabel1 包含 2 列

  1. 身份证
  2. 姓名

Tabel2 包含 2 列

  1. 身份证
  2. 年龄

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

那么 table1 应该包含 3 列

  1. 身份证
  2. 姓名
  3. 年龄

【问题讨论】:

    标签: mysql sql select sql-update alter


    【解决方案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 如果这是真的,那将是一种非常讨厌的劫持第一个答案的方式,我会收回我之前所说的一切。
    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 2019-03-13
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多