我试图连接来自同一列但具有不同条件的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
有办法做到这一点吗?感谢您的反馈。
答案 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