mysql基于一列从两行中提取列

mysql基于一列从两行中提取列,mysql,Mysql,我正试图将下表中“value”列的两行合并为一行 mysql> select * from table; +-----+---------+----------+------------------------+ | id | rsvp_id | field_id | value | +-----+---------+----------+------------------------+ | 181 | 37 | 1 | Fir

我正试图将下表中“value”列的两行合并为一行

mysql> select * from table;
+-----+---------+----------+------------------------+
| id  | rsvp_id | field_id | value                  |
+-----+---------+----------+------------------------+
| 181 |      37 |        1 | First                  |
| 184 |      37 |        4 | Last                   |
| 187 |      37 |       10 |                        |
| 190 |      37 |       13 | spicegirls             |
| 193 |      37 |        7 | mark@test2.com         |
| 196 |      40 |        1 | Brian                  |
| 199 |      40 |        1 | Smith                  |
| 202 |      40 |        7 | Brian@test .com        |
| 205 |      40 |       10 | BBQ                    |
+-----+---------+----------+------------------------+
9 rows in set (0.00 sec)
理想情况下,我希望得到以下结果

rsvp_id  | value
========  ========
37         First Last
40         Brian Smith
该查询仅获取字段_id=1的行,然后连接value列,并创建一个带有rsvp_id和concat值的新行

另外,现在的field_id列和1就是一个例子,我必须找出如何使它工作,而不是
1
它从另一个表中获取条件

基本上,以上是名字和姓氏的值。字段\u id是另一个表的外键

我曾尝试在网上搜索并自己处理,但我无法将这两行合并为一行


谢谢。

您必须先使用分组,然后再使用分组

类似这样的(未经测试)可能会起作用:

   SELECT rsvp_id, GROUP_CONCAT(value SEPARATOR ' ')
     FROM t
    WHERE field_id = 1
 GROUP BY rsvp_id
有关详细信息,请参阅MySQL文档,并了解值的顺序等:

您必须先使用分组,然后再使用
GROUP\u CONCAT

类似这样的(未经测试)可能会起作用:

   SELECT rsvp_id, GROUP_CONCAT(value SEPARATOR ' ')
     FROM t
    WHERE field_id = 1
 GROUP BY rsvp_id
有关详细信息,请参阅MySQL文档,并了解值的顺序等:

您的查询是什么样子的?类似于:group_concat(值“”)where field_id in(1,4)group by rsvp_id这是我到目前为止得到的:选择rsvp_id,group_concat(值分隔符“”)作为n FROM registration_rsvp_field_value left join registration_rsvp_custom_field on(registration_rsvp_custom_field.id=registration_rsvp_field_value.field_id)left join registration_rsvp on(registration_rsvp.id=registration_rsvp_field_value.rsvp_id)WHERE field_id IN(1,2)和form_id=1 groupby rsvp_id你的查询是什么样子的?类似于:GROUP_concat(value.),WHERE field_id IN(1,4)按rsvp\u id分组这是我到目前为止所拥有的:从注册中选择rsvp\u id,group\u CONCAT(值分隔符“”)作为n\u rsvp\u字段\u值左连接注册\u rsvp\u自定义\u字段on(注册\u rsvp\u自定义\u字段。id=注册\u rsvp\u字段\u值。字段\u id)左连接注册\u rsvp on(registration_rsvp.id=registration_rsvp_field_value.rsvp_id)其中字段_id在(1,2)中,表单_id=1 groupby rsvp_id嘿,这似乎与我之前的操作完全相同。下面的查询从registration_rsvp_field_value左侧的join registration_rsvp_自定义_字段中选择rsvp id,GROUP_CONCAT(值分隔符“”)作为n(registration_rsvp_custom_field.id=registration_rsvp_field_value.field_id)左连接注册(registration_rsvp.id=registration_rsvp_field_value.rsvp_id),其中字段_id位于(1,2)中和form_id=1 groupby rsvp_i输出类似于这个rsvp_id的东西| n37 | Mark 38 | Dan 39 | John如果我按rsvp_id删除这个组,我只会得到一个名为concatedHey的列,看起来这和我之前的一样as n从注册\u rsvp\u字段\u值左连接注册\u rsvp\u自定义\u字段打开(注册\u rsvp\u自定义\u字段.id=注册\u rsvp\u字段\u值.field \u id)左连接注册\u rsvp打开(注册\u rsvp.id=注册\u rsvp\u字段\u值.rsvp\u id),其中字段\u id位于(1,2)如果我用rsvp|id移除组,我只会得到一个名为concated的列