【发布时间】:2014-04-25 11:03:55
【问题描述】:
我想将数据从表 A 复制/更新到表 B。表 B 有更多的列。我尝试了以下选项。
1) `REPLACE INTO `B` (SHOW FIELDS FROM 'A') SELECT * FROM `A
2) `REPLACE INTO `B`
(SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='test1' AND `TABLE_NAME`='A') SELECT * FROM `A
但它会引发错误。你们能帮我如何使用选择查询选择名称吗?
更新:
3) 正如 Jerko 所建议的,
我有两张表 A(warehouse_id,long,lat) B(warehouse_id,long)
应用以下语句。
SET @query = CONCAT('REPLACE INTO `A` (SELECT ',
(SELECT GROUP_CONCAT(CONCAT('`',column_name, '`'))
FROM information_schema.columns
WHERE `TABLE_SCHEMA`='test2' AND `table_name` = 'A'),
' FROM `B`)');
PREPARE stmt FROM @query;
EXECUTE stmt;
这给了我错误
"#1054 - 'field list' 中的未知列 'lat'"
【问题讨论】: