sql - 如何在没有group_concat的情况下将不同的行合并为一个

时间:2014-02-03 17:04:42

标签: mysql sql

在这个例子中,我对同一个用户有不同的值。所以我必须把所有这些值都放在一行。

user_id     key           value
-------     --------      -----------
123         name       thomps
123         url        thomps.com
123         email      thomps@me.com

456         name       hond
456         url        hond.com
456         email      hond@me.com

如何获取合并这样的行的列表:

user_id    name       url           email
-------    ----       ----          ------
123        thomps     thomps.com    thomps@me.com
456        hond       hond.com      hond@me.com

我尝试使用grop_concat并加入子查询但没有成功

1 个答案:

答案 0 :(得分:5)

由用户分组,然后使用案例在不同的列中获取结果

 select user_id, 
       max(case when `key` = 'name' then value end) as name,
       max(case when `key` = 'url' then value end) as url,
       max(case when `key` = 'email' then value end) as email
from your_table
group by user_id