我想将一个列(定义,而不是数据)从一个表复制到另一个表。如果该列不存在于目标表中,则添加该列,或者更好的是,如果该列存在,则相应地进行修改。
尝试谷歌,但似乎所有内容都是关于复制数据而不是定义,或者是使用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中实现这一目标的任何方法?
答案 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
)