我有一个数据库,在一个名为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/

10-13 06:23