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

Alp*_*ayr 7 mysql

假设我有一个包含单列的下表:

表格1

-----------
| nameCol |
-----------
| A       |
| A       |
| B       |
| C       |
-----------
Run Code Online (Sandbox Code Playgroud)

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

TABLE_2

| pk | A | B | C |
Run Code Online (Sandbox Code Playgroud)

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

我试过了:

create table Table_2 (
  select group_concat(distinct(nameCol), " varchar(50), ")
  from Table_1
);
Run Code Online (Sandbox Code Playgroud)

fth*_*lla 4

您可以使用动态查询:

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;
Run Code Online (Sandbox Code Playgroud)

请参阅此处的小提琴。