我想從表A複製/更新數據到表B.表B還有一些額外的列。我嘗試了以下選項。如何在select語句中選擇列名
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
但它會引發錯誤。你們可以幫我怎麼選擇名稱與選擇查詢?
UPDATE:
3)如所建議的通過Jerko,
我有兩個表A(warehouse_id,長,LAT)B(warehouse_id,長)
應用於下面的語句。
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 - 未知列在 '字段列表' 緯度'」 的錯誤
謝謝,但它拋出了錯誤「#1064 - 你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的手冊,在第1行'NULL'附近使用正確的語法。我是否錯過了上面的查詢?因爲我在 –
之前從未使用過準備好的語句嗎?我運行它在我的數據庫,它的工作原理應該是 –
也許你是錯誤的table_schema和表名稱? –