通过提及跨数据库的所有列来选择“插入查询”

时间:2015-11-16 11:38:16

标签: mysql database data-migration

我正在重新设计遗留数据库,我已经为旧数据库的列设置了新名称。因此,例如,如果dbold下的descr包含description列,则我已在新newdb.netable列中将其设置为$_POST

如何在查询中提及单个列?

我正在使用MYSQL

更新:两个数据库都在不同的IP地址上,我使用Navicat传输数据。

2 个答案:

答案 0 :(得分:0)

您可以一次插入所有列,而无需使用此名称来提及名称:

INSERT INTO newtable (SELECT * FROM oldtable);

它将独立于列名进行1x1匹配。

如果类型不匹配,则会插入默认值(未检查所有类型组合)。

请注意,两个表上的列号必须相同,否则会出现如下错误:

 #1136 - Column count doesn't match value count at row 1

答案 1 :(得分:0)

您可以尝试这样:

INSERT INTO newtable (col1, col2, ..., )
SELECT col1, col2, ..., FROM oldtable

通过尝试上述查询,您可以插入特定列。因此,例如,如果您的newtable有一个列作为描述,而旧表有descr,那么您可以提及它:

INSERT INTO newtable (col1, col2, `description`,  ..., )
SELECT col1, col2, `descr` ,..., FROM oldtable

此外,如果表列列表很大并且您想要复制所有列及其数据,那么您只需使用通配符字符*

INSERT INTO newtable
SELECT * FROM oldtable;