0

我还没有找到一个足够具体的答案来完全满足我的要求,所以我希望这不是一个重复的问题。

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

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_submitsWHERE form_id= '10' AND element_label<4

我想要的结果是:

group_id | full_name
34         John A Doe
35         George C Washington

非常感谢您的帮助。

4

2 回答 2

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;
于 2013-06-25T18:07:20.227 回答
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
于 2013-06-25T18:09:24.720 回答