将列定义从一个表复制到另一个表?

时间:2015-09-02 05:53:23

标签: mysql ddl

我想将一个列(定义,而不是数据)从一个表复制到另一个表。如果该列不存在于目标表中,则添加该列,或者更好的是,如果该列存在,则相应地进行修改。

尝试谷歌,但似乎所有内容都是关于复制数据而不是定义,或者是使用CREATE TABLE ... LIKE ...复制整个表格。

到目前为止the closest我能找到的是:

CREATE TABLE table2 AS 
SELECT field4, field7                -- only the columns you want
FROM table 
WHERE FALSE;                 -- and no data

但我需要将列复制到现有表。所以我试过了:

ALTER TABLE table2 AS 
SELECT field4, field7                -- only the columns you want
FROM table 
WHERE FALSE;                 -- and no data

但显然它拒绝工作。

有类似的东西吗?

ALTER TABLE table1 ADD COLUMN column2 LIKE table2.column5

在MySQL中实现这一目标的任何方法?

1 个答案:

答案 0 :(得分:0)

最好的方法是转储表格,然后您可以使用 ALTER 命令创建新表格。

转储表格会将查询返回给创建表格。

CREATE TABLE IF NOT EXISTS customer ( id int(11) NOT NULL AUTO_INCREMENT, customerId varchar(50) NOT NULL, firstName varchar(30) NOT NULL, middleName varchar(30) DEFAULT NULL, lastName varchar(30) CHARACTER SET utf8 COLLATE utf8_estonian_ci DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

ALTER 用于现有表格,(例如customerinfo

`ALTER TABLE customerinfo ADD COLUMN (
  customerId varchar(50) NOT NULL,
  firstName varchar(30) NOT NULL,
  middleName varchar(30) DEFAULT NULL,
  lastName varchar(30) CHARACTER SET utf8 COLLATE utf8_estonian_ci DEFAULT NULL
)