我正在尝试从 Many_to_many 关系生成嵌套 JSON 对象。我正在尝试找到下面的 JSON 模式。
[
{
"user_id": 151,
"user_name": “Sam123”,
"role_desc": [“Power_User”]
},
{
"user_id": 152,
"user_name": “John999”,
"role_desc": ["Admin", "Power_User"]
}
}
我尝试了如下组合 JSON 函数,但结果与我需要的不同。
SET @result = JSON_OBJECT('result,0,'data ',(SELECT
JSON_ARRAYAGG(JSON_OBJECT(
'user_id',user_tbl.user_id,
‘user_name’, user_tbl.user_name,
'role_desc',app_role_tbl.role_desc))
FROM user_tbl
INNER JOIN user_role ON user_tbl.user_id = user_role.user_id
INNER JOIN app_role_tbl ON user_role.role_id = app_role_tbl.role_id ));
结果带有重复的 user_id,每个 user_id 有两行,每个角色一行。
SET @result = JSON_OBJECT('result,0,'data ',(SELECT
JSON_ARRAYAGG(JSON_OBJECT(
'user_id',user_tbl.user_id,
‘user_name’, user_tbl.user_name,
'role_desc',JSON_ARRAYAGG(app_role_tbl.role_desc)))
FROM user_tbl
INNER JOIN user_role ON user_tbl.user_id = user_role.user_id
INNER JOIN app_role_tbl ON user_role.role_id = app_role_tbl.role_id ));
使用此 SQL 查询和那些 JSON 函数,我收到错误
错误代码:1242。子查询返回超过 1 行。
我该如何解决这个问题?