使用不同条件连接同一列中的2个值

时间:2016-03-13 15:24:46

标签: mysql sql join

我试图连接来自同一列但具有不同条件的2个值。这是我的样本表。

 ----------------------------------
| user_id | key        | value     |
 ----------------------------------
  1         firstname    maria
  1         lastname     enuole
  2         firstname    chris
  2         lastname     magnolia

将值字段中的值与具有相同user_id的键firstname和lastname连接起来。对不起,这很难解释。

我想要这样的结果......

 --------------------------
| user_id | Name           |
 --------------------------
  1         maria enuole
  2         chris magnolia

有办法做到这一点吗?感谢您的反馈。

3 个答案:

答案 0 :(得分:1)

您可以使用group_concat()order by执行此操作。在您的情况下,解决方案非常简单:

select user_id,
       group_concat(value separator ' ' order by key) as name
from t
where key in ('firstname', 'lastname')
group by user_id;

或者,使用join方法:

select tfirst.user_id, concat_ws(' ', tfirst.value, tlast.value) as name
from t tfirst join
     t tlast
     on tfirst.user_id = tlast.user_id and
        tfirst.key = 'firstname' and
        tlast.key = 'lastname';

答案 1 :(得分:1)

使用Conditional Aggregate的另一种方式,但我更喜欢Group_concat方法

select user_id, concat(F_name, ' ', L_name)
From
(
select user_id, 
       max(case when key = 'firstname' then value end) F_name,
       max(case when key = 'lastname' then value end) as L_name
From Yourtable
Group by user_id
) A

答案 2 :(得分:0)

尝试这样的事情:

SELECT user_id
     , GROUP_CONCAT(value SEPARATOR ' ') as Name 
  FROM tablename 
 GROUP BY user_id