使用列中的值作为新表的字段名称

时间:2011-11-08 11:23:32

标签: mysql

我需要构建一个临时表,其中字段名称是另一个表的列中的值。第二个表可以(并且将会)在网站开发期间发生变化,因此我无法将字段名称硬编码到我的例程中。

作为我的意思的一个例子,将其视为源表,恰当地命名为“sourcetable”:

field_id    fieldname
1           profile_name
2           profile_surname
5           profile_address_street

然后我需要制作一个看起来像这样的表:

profile_name    profile_surname profile_address_street
John            Doe             Baker Street

我试过了:

create temporary table if not exists newtable(
  select fieldname from sourcetable
);

但是返回的表只包含“sourcetable”中的“fieldname”列。有谁知道一个干净,快速的方法吗?

1 个答案:

答案 0 :(得分:1)

在我看来,最简单,最干净的方法是使用数据在应用程序代码中构建CREATE [TEMPORARY] TABLE(甚至是一个普通的SELECT查询 - 具体取决于你如何使用东西)语句sourcetable,正好运行它。

您无法在纯SQL中执行任何灵活操作,也可能无法使用存储过程(但我不是100%肯定)。