如何使用 json1 将数据内部连接和解析为 JSON
How to inner join and parse data as JSON using json1
例如,假设我有一个名为 Movie 的 table,有 2 列 - [id,title]
数据:
1, killbill
2, endgame
和另一个 table 作为
Cast 有 2 列 - [id,name]
数据:
1, Uma
1, David
2, Robert
Cast table有演员并且id与电影相同
我想要的 SELECT 查询的输出类似于:
1, killbill, [uma,David]
2, endgame,[Robert]
我尝试了什么:
select m.*,json_array(c.name) from movie m inner join cast c on c.id = m.id
但是 returns:
1 killbill [David]
1 killbill [Uma]
2 endgame [Robert]
请建议正确的数据分组方法。我也试过 group by,但是 returns 数据少了。
如果我使用json_group_array
,我只会得到一部所有演员的电影
1 killbill ["David","Uma","Robert"]
您必须 group by
电影并使用聚合函数 json_group_array()
而不是 json_array()
:
select m.id, m.title, json_group_array(c.name) names
from movie m inner join cast c
on c.id = m.id
group by m.id, m.title
参见demo。
结果:
| id | title | names |
| --- | -------- | --------------- |
| 1 | killbill | ["David","Uma"] |
| 2 | endgame | ["Robert"] |
例如,假设我有一个名为 Movie 的 table,有 2 列 - [id,title]
数据:
1, killbill
2, endgame
和另一个 table 作为 Cast 有 2 列 - [id,name]
数据:
1, Uma
1, David
2, Robert
Cast table有演员并且id与电影相同
我想要的 SELECT 查询的输出类似于:
1, killbill, [uma,David]
2, endgame,[Robert]
我尝试了什么:
select m.*,json_array(c.name) from movie m inner join cast c on c.id = m.id
但是 returns:
1 killbill [David]
1 killbill [Uma]
2 endgame [Robert]
请建议正确的数据分组方法。我也试过 group by,但是 returns 数据少了。
如果我使用json_group_array
,我只会得到一部所有演员的电影
1 killbill ["David","Uma","Robert"]
您必须 group by
电影并使用聚合函数 json_group_array()
而不是 json_array()
:
select m.id, m.title, json_group_array(c.name) names
from movie m inner join cast c
on c.id = m.id
group by m.id, m.title
参见demo。
结果:
| id | title | names |
| --- | -------- | --------------- |
| 1 | killbill | ["David","Uma"] |
| 2 | endgame | ["Robert"] |