在mysql上将多行合并为一行和多列

kat*_*art 12 mysql sql

我在MYSQL工作,需要提取用户数据以进入视图.我将在电子邮件客户端中使用数据,因此我无法在应用层中执行此操作.

问题是用户的每个数据字段都包含在单独的行中(这就是Wordpress设置数据结构的方式).

例如,wp_usermeta为每个用户提供了多行数据,如下所示:

user_id   meta_key       meta_data
   2      first_name     Jane
   2      last_name      Austin
   2      email          jane@me.com
   3      first_name     Jack
   3      last_name      Palmer
   3      email          jack@me.com
Run Code Online (Sandbox Code Playgroud)

我需要将数据合并为一行,单独的字段,如下所示:

user_id  first_name  last_name  email
2        Jane        Austin     jane@email.com
3        Paul        Parker     jack@email.com
Run Code Online (Sandbox Code Playgroud)

我四处搜索,无法在任何地方找到这个确切的问题(我发现了很多连接,但这不是我需要的).

Ada*_*ger 13

如果这些是您唯一关注的列,这将适合您:

SELECT um.user_id
   , fn.meta_data AS first_name
   , ln.meta_data AS last_name
   , e.meta_data AS email
FROM wp_userMeta AS um
LEFT JOIN wp_user_Meta AS fn ON um.user_id = fn.user_id
   AND fn.meta_key = 'first_name'
LEFT JOIN wp_user_Meta AS ln ON um.user_id = ln.user_id
   AND ln.meta_key = 'last_name'
LEFT JOIN wp_user_Meta AS e ON um.user_id = e.user_id
   AND e.meta_key = 'email'
Run Code Online (Sandbox Code Playgroud)