具有下表,我正在尝试将“值”列中的两行合并为一个
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
查询仅捕获field_id = 1的行,然后连接值列,并使用rsvp_id和concat值创建新行。
此外,现在的field_id列以1为例,我将不得不弄清楚如何使其工作,因此它代替了1
而是从另一个表中获取条件。
基本上,以上是名字和姓氏的值。 field_id是另一个表的外键。
我曾尝试过在线搜索并自己弄乱它,但是我无法将两行合并为一行。
谢谢。
答案 0 :(得分:2)
您必须先使用分组,然后再使用GROUP_CONCAT
。
类似(未经测试)的方法可能会起作用:
SELECT rsvp_id, GROUP_CONCAT(value SEPARATOR ' ')
FROM t
WHERE field_id = 1
GROUP BY rsvp_id
有关详细信息,请参见MySQL文档,还可以了解值的顺序等: https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat