我正在重新设计遗留数据库,我已经为旧数据库的列设置了新名称。因此,例如,如果dbold
下的descr
包含description
列,则我已在新newdb.netable
列中将其设置为$_POST
。
如何在查询中提及单个列?
我正在使用MYSQL
更新:两个数据库都在不同的IP地址上,我使用Navicat传输数据。
答案 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;