创建一个表,其列名从另一个表的行值派生

时间:2013-04-04 19:31:29

标签: mysql

假设我的下表包含一列:

TABLE_1

-----------
| nameCol |
-----------
| A       |
| A       |
| B       |
| C       |
-----------

我想创建一个包含以下列名的新表:

表_2。

| pk | A | B | C |

即,来自一个表的数据成为第二个表的列名。 在某种程度上可能涉及到一个支点,但我无法真正得到答案。

我试过了:

create table Table_2 (
  select group_concat(distinct(nameCol), " varchar(50), ")
  from Table_1
);

1 个答案:

答案 0 :(得分:3)

您可以使用动态查询:

SELECT
  CONCAT(
    'CREATE TABLE Table_2 (',
    GROUP_CONCAT(DISTINCT
      CONCAT(nameCol, ' VARCHAR(50)')
      SEPARATOR ','),
    ');')
FROM
  Table_1
INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;

请参阅小提琴here