我需要创建一个临时表,其中列名将使用select命令动态生成(表示:另一个表的值。)。但是当我运行命令时,临时表创建的值不是列名。 我试过如下:
SELECT ColVal FROM tableA
表A
------------------------
ColName | ColVal
------------------------
id | 1
----------------------
Name | Test
----------------------
Age |25
---------------------
现在,我需要创建临时表B,其列名将如下所示
表B
--------------
id| Name| Age|
--------------
我试过了查询:
CREATE TEMPORARY TABLE TableB as (select ColName from TableA)
它没有给我实际的输出。它创建表格如下:
表B
-----------------
ColName
-----------------
id
--------
Name
--------
Age
--------
答案 0 :(得分:0)
我不确定这是最好的方法,但你可以运行动态构造的sql。你可以这样做:
SELECT CONCAT("CREATE TEMPORARY TABLE TableB (",
group_concat( CONCAT(ColName, " VARCHAR(50)")), ");")
INTO @Expression
FROM TableA;
PREPARE myquery FROM @Expression;
EXECUTE myquery;
@Expression将等于:CREATE TEMPORARY TABLE TableB (id VARCHAR(50),Name VARCHAR(50),Age VARCHAR(50));