繁体   English   中英

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

[英]Copy column definition from one table to another?

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

尝试谷歌,但一切似乎都是关于复制数据而不是定义,或关于使用CREATE TABLE ... LIKE ...复制整个CREATE TABLE ... LIKE ...

到目前为止我能找到的最接近的是:

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中实现这一点?

最好的方法是转储表,然后您可以使用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 ;

使用相同的,以变更现有表(比方说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
) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM