1

例如,假设我有一个名为Movie的表,有 2 列 - [id,title]

资料

1, killbill
2, endgame

另一个表作为 Cast有 2 列 - [id,name]

数据:

1, Uma
1, David
2, Robert

演员表有演员,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  

但它返回:

1   killbill    [David]
1   killbill    [Uma]
2   endgame     [Robert]

请提出正确的数据分组方式。我也尝试过分组,但它返回的数据更少。

如果我使用json_group_array,我只会得到一部全演员的电影

1   killbill    ["David","Uma","Robert"]
4

1 回答 1

0

您必须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

请参阅演示
结果:

| id  | title    | names           |
| --- | -------- | --------------- |
| 1   | killbill | ["David","Uma"] |
| 2   | endgame  | ["Robert"]      |
于 2020-06-16T17:26:47.293 回答