获取将多个表作为一行连接的结果

Ali*_*iBZ 9 mysql

我有这两张表:

table1:

id | name
---------
1  | john
2  | jack

table2:

id | profile_id | institution
-----------------------------
1  | 1          | SFU
2  | 1          | UBC
3  | 2          | BU
4  | 2          | USC
5  | 2          | SFU
Run Code Online (Sandbox Code Playgroud)

如果我想使用他的用户 ID 获取有关用户的所有信息,我可以简单地使用以下方法加入他们:

select a.id, a.name, b.institution from table1 a, table2 b
where a.id = USER_ID and a.id = b.profile_id
Run Code Online (Sandbox Code Playgroud)

对于 USER_ID = 1 返回:

id | name | institution
-----------------------
1  | john | SFU
1  | john | UBC
Run Code Online (Sandbox Code Playgroud)

我需要的实际上是 1 个唯一行而不是多行。有没有可能得到这样的东西?(我还没有看到可以做的事情,但不确定)

id | name | institution
-----------------------
1  | john | [SFU, UBC]
Run Code Online (Sandbox Code Playgroud)

Rol*_*DBA 8

您可以使用GROUP_CONCAT函数

SELECT a.id, a.name, CONCAT('[',GROUP_CONCAT(b.institution),']') institution
FROM table1 a INNER JOIN table2 b
ON a.id = b.profile_id
WHERE a.id = USER_ID
GROUP BY a.id, a.name;
Run Code Online (Sandbox Code Playgroud)

或使用您的原始查询

select a.id, a.name, CONCAT('[',GROUP_CONCAT(b.institution),']') institution
from table1 a, table2 b where a.id = USER_ID and a.id = b.profile_id
group by a.id, a.name;
Run Code Online (Sandbox Code Playgroud)

试一试 !!!