我想将一列(定义,而不是数据)从一个表复制到另一个表。如果目标表中不存在该列,则添加该列,或者更好的是,如果存在,则相应地修改它。
试图谷歌,但一切似乎都是关于复制数据而不是定义,或者关于使用CREATE TABLE ... LIKE ....
CREATE TABLE table2 AS
SELECT field4, field7 -- only the columns you want
FROM table
WHERE FALSE; -- and no data
Run Code Online (Sandbox Code Playgroud)
但我需要将列复制到现有表中。所以我试过:
ALTER TABLE table2 AS
SELECT field4, field7 -- only the columns you want
FROM table
WHERE FALSE; -- and no data
Run Code Online (Sandbox Code Playgroud)
但显然它拒绝工作。
有这样的吗?
ALTER TABLE table1 ADD COLUMN column2 LIKE table2.column5
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在 MySQL 中实现这一点吗?
小智 2
最好的方法是转储表,然后可以使用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
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |