首页 > 解决方案 > 为另一个表中的每个元素创建一个包含一列的新表

问题描述

我在 MySQL 中创建了一个表,其中包含要从 FRED 数据中引入的所有数据名称。

在此处输入图像描述

现在我想创建一个新表,上面的示例表中的 1504 个名称,每个都有一列。

AAA AAA10M AAAFFM ADBJORNS and so on.

因此, fred_namecol 中的每个名称都应该得到一列,每列都以数字作为值。有没有一种简单的方法来代替手动编写每个人?

也许有一种方法可以遍历每个名​​称并为它们创建一个列到一个新表中?

标签: mysqlsqldatabaseloops

解决方案


是的。有一种方法。

在以下查询中;WRITE_YOUR_TABLE_NAME_HERE 替换为包含fred_namecol列的表的名称:

drop table if exists columns_over_1000;
set @prefix = 'CREATE TABLE columns_over_1000 (';
set @suffix = '\n);';
select @create_table_sql := concat(
    @prefix, 
        group_concat('\n    `', fred_namecol, '` INT'), 
    @suffix) 
from `WRITE_YOUR_TABLE_NAME_HERE`;

PREPARE stmt1 FROM @create_table_sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

select * from columns_over_1000;

推荐阅读