mysql使用select命令

时间:2018-03-06 09:58:49

标签: mysql

我需要创建一个临时表,其中列名将使用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
--------

1 个答案:

答案 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));