是否可以使用预处理语句在MySQL中创建表?

是否可以使用预处理语句在MySQL中创建表?,mysql,prepared-statement,Mysql,Prepared Statement,是否可以在MySQL中使用准备好的语句创建表?我有以下语句,它使用第二个表中的条件从一个表中选择列,并希望创建一个包含结果的表: SET @sql = ( SELECT GROUP_CONCAT(COLUMN_NAME) FROM (SELECT DISTINCT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='mpi_install') a JOIN display_data ON display_data.dis

是否可以在MySQL中使用准备好的语句创建表?我有以下语句,它使用第二个表中的条件从一个表中选择列,并希望创建一个包含结果的表:

SET @sql = (
SELECT GROUP_CONCAT(COLUMN_NAME) FROM 
(SELECT DISTINCT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='mpi_install') a
JOIN display_data
ON display_data.display_data_name = a.column_name
WHERE display_data.display_summary = "1"
AND display_data.phase_name="mpi_install"
);

SET @query = CONCAT('SELECT ', @sql, 'FROM mpi_install');

PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
该测试的输出为(带有虚假测试数据):

原始表mpi_install有更多的列,而display_数据定义了将从此表和其他表中显示哪些列。

使用以下方法:

SET @query = CONCAT('CREATE TABLE `name` AS SELECT ', @sql, 'FROM mpi_install');

你试过了吗?结果是什么?此语句工作并返回所需的数据列,但按当前构造,仅将它们打印到屏幕上(有关结果,请参阅上面的编辑)。我想将这些数据存储为一个新的表或视图,只包含这些列。谢谢!我一定是弄错了引语什么的,因为一个小时前还不起作用。
SET @query = CONCAT('CREATE TABLE `name` AS SELECT ', @sql, 'FROM mpi_install');