是否可以使用预准备语句在 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;
其输出是(带有虚假测试数据):
+---------------+-------------------+-------------+---------------------+
| http_username | platform_hardware | test_result | start_timestamp |
+---------------+-------------------+-------------+---------------------+
| name1 | platform1 | result1 | 0000-00-00 00:00:00 |
| name2 | platform2 | result2 | 0000-00-00 00:00:00 |
| name3 | platform3 | result3 | 0000-00-00 00:00:00 |
| name4 | platform4 | result4 | 0000-00-00 00:00:00 |
| name5 | platform5 | result5 | 0000-00-00 00:00:00 |
| name6 | platform6 | result6 | 0000-00-00 00:00:00 |
| name7 | platform7 | result7 | 0000-00-00 00:00:00 |
| name8 | platform8 | result8 | 0000-00-00 00:00:00 |
+---------------+-------------------+-------------+---------------------+
原始表 mpi_install 有更多列,display_data 定义将从该表和其他表中显示哪些列。
最佳答案
使用这个:
SET @query = CONCAT('CREATE TABLE `name` AS SELECT ', @sql, 'FROM mpi_install');
关于mysql - 是否可以使用预准备语句在 MySQL 中创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21502536/