mysql - 是否可以使用预准备语句在 MySQL 中创建表?

标签 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.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/

相关文章:

mysql - 订单联盟查询

MySQL - 非常慢的查询(在一张表上简单选择)

java - java中的preparedStatement SQL错误

mysql - SQL 或返回较少结果

php - 使用日期和总和旋转 mysql 结果

mysql 向不工作的用户授予 sql 脚本

php - 调用非对象上的成员函数bind_param()

java - 如何将整数值列表发送到准备好的语句中

java - 用于读取临时参数的PreparedStatement

php - 将 MYSQL 查询结果粘贴到以逗号分隔的字符串中