我有这两张表:
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)
您可以使用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)
| 归档时间: |
|
| 查看次数: |
18867 次 |
| 最近记录: |