mysql合并来自不同行的三个不同的值

时间:2013-06-25 18:05:01

标签: php mysql join rows

我没有找到足够具体到我正在寻找的答案,所以我希望这不是一个重复的问题。

我正在尝试在结果列表中创建一个如下所示的全名列表:

id  | form_id | element_label | element_value | group_id
245   10        1               John            34
245   10        2               A               34
245   10        3               Doe             34
245   10        1               George          35
245   10        2               C               35
245   10        3               Washington      35

这是我的查询: SELECT * FROM jm3_formmaker_submits WHERE form_id ='10'和element_label< 4

我想要的结果是:

group_id | full_name
34         John A Doe
35         George C Washington

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

您应该查看 GROUP_CONCAT() 功能。

会是这样的:

SELECT group_id, 
       GROUP_CONCAT(element_value 
                    ORDER BY element_label
                    SEPARATOR ' ')
         AS full_name 
FROM jm3_formmaker_submits 
WHERE form_id = 10 
  AND element_label < 4 
GROUP BY group_id;

答案 1 :(得分:0)

这个会给你更多的字符串结构控制(我想你会想用空格分隔它们,不是吗?):

select group_id,concat(a,' ',b,' ',c) from
(select group_id,element_value as a from jm3_formmaker_submits where element_label=1) as first_name,
(select group_id,element_value as b from jm3_formmaker_submits where element_label=2) as middle_name,
(select group_id,element_value as c from jm3_formmaker_submits where element_label=3) as last__name
where
middle_name.group_id=first_name.group_id and
last__name.group_id=first_name.group_id