我有一个数据库,在一个名为jos_facileforms_subrecords
的表中有两列。我想报告:记录,价值
记录包含一组唯一的记录值,值包含我要转换为列的值。即。:
RECORD | NAME | VALUE
1 | firstname | Frank
1 | lastname | Smith
1 | email | [email protected]
2 | firstname | Sally
2 | lastname | Jones
2 | email | [email protected]
3 | firstname | Peter
3 | lastname | Baker
3 | email | [email protected]
我想把它变成每一个记录集的一行。即
FIRST NAME | LAST NAME | EMAIL
Frank | Smith | [email protected]
Sally | Jones | [email protected]
Peter | Baker | [email protected]
最佳答案
你要找的是一个透视查询。其他的DBMS也有这个功能,不幸的是MySQL没有,所以您必须手动完成。有几种方法可以做到这一点。这里有一个适合你的情况:
select
f.`record` as `record`,
f.`value` as `first name`,
l.`value` as `last name`,
e.`value` as `email`
from
jos_facileforms_subrecords f
inner join jos_facileforms_subrecords l on f.record = l.record
inner join jos_facileforms_subrecords e on f.record = e.record
where
f.name = 'firstname'
and l.name = 'lastname'
and e.name = 'email'
group by f.`record`
看到它在这个fiddle中工作。
关于mysql - 使用来自另一列的一组值创建列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26031568/