FROM子句中的表由MySQL中的变量定义

时间:2018-12-13 13:48:52

标签: mysql

我想为MySQL 5.7创建一个SQL脚本,该脚本将数据库原始表中的数据插入另一个目标数据库的表中。

我想通过变量定义此源数据库。

USE my_target_db;
SET @origin_db='my_origin_db';
SET @origin_table = concat(@origin_db,'.','tablename');

INSERT INTO target_table SELECT * FROM @origin_table;

在各种示例中都使用变量来定义列名,但我从未见过用它定义表的方法。

有人为此欺骗吗?

2 个答案:

答案 0 :(得分:1)

在MySQL的表名中不使用变量。您只能对动态构建查询使用准备好的语句。例如:

C:/xampp/htdocs

您可以在official documentation

中了解更多详细信息

答案 1 :(得分:1)

您可以像这样使用Prepared Statement

USE my_target_db;
SET @origin_db='my_origin_db';
SET @origin_table = concat(@origin_db,'.','tablename');

SET @qry1 = concat('INSERT INTO target_table SELECT * FROM ', @origin_table);
PREPARE stmt1 from @qry1;
EXECUTE stmt1;

DEALLOCATE PREPARE stmt1;