mysql - 使用从另一个表的行值派生的列名创建一个表

标签 mysql

假设我有下表,只有一列:

表_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
);

最佳答案

您可以使用动态查询:

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;

请参阅 fiddle here .

关于mysql - 使用从另一个表的行值派生的列名创建一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15820082/

相关文章:

mysql - 将变量插入查询

python - 无法从存储过程中检索 OUT 参数 (MySQL)

mysql - 在 Delphi 中为 MySQL 创建 UDF

php - 有没有像 EtherPad Using php and mySql 这样的开源项目?

php - 如何将 SQL 注入(inject)我的站点?

mysql - 如何将整数转换为日期时间?

mysql - 试图将值从 jsp 传递到 servlet

mysql - 大型分析数据库响应式检索 (MYSQL)

mysql - 是否有更好/更简洁的方式来编写此查询?

php - 使用 PHP 重新排序 mysql 行