mysql使用join更改列名

时间:2012-09-25 14:10:35

标签: php mysql join

我有一个表data_table,我在其上定义了一个主键作为d_id,其他字段定义为f1到f25。 我有另一个表作为fields_name,字段名称存储为value f_id,field_name,order

我希望使用列名作为field_values存储在fields_name表中,从数据表中获取所有数据 我得到了什么,

f1   f2   f3   f4 
a    b    c    d

我想要的,

field_name1    field_name1    field_name1    field_name1
a              b              c              d

帮助appriciated .....

2 个答案:

答案 0 :(得分:0)

听起来你可能想做这样的事情:

select d_id, 
  max(case when field_name = 'Header' then value end) Header,
  max(case when field_name = 'ID No.' then value end) ID_No,
  max(case when field_name = 'Image' then value end) Image,
  max(case when field_name = 'Name' then value end) Name
from
(
  select d_id, f1 value, 'f1' col
  from data_table
  union all
  select d_id, f2 value, 'f2' col
  from data_table
  union all
  select d_id, f3 value, 'f3' col
  from data_table
  union all
  select d_id, f4 value, 'f4' col
  from data_table
) u
inner join fields_name f
  on u.col = f.a_flag
group by d_id

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

我不明白......如果您想重命名列名,可以使用AS

SELECT f1 AS "field_name1", f2 AS "field_name2", f3 AS "field_name3" FROM table

编辑:

尝试这样的事情:

SELECT f1,f2,f3,f4... FROM data_table LEFT JOIN data_table ON data_table.f1=(SELECT field_name FROM fields_names WHERE a_flag='f1') AND data_table.f2=(SELECT field_name FROM fields_names WHERE a_flag='f2')

相关问题