Table1 (users): id, name
Table2 (roles): id, name
Table3 (user-roles): userid, roleid
以下JSON中的所需结果:
{
"id":1,
"name":"username",
"roles":[
{
"id":1
"name":"admin"
},
{
"id":2,
"name":"community manager"
}
]
}
是否有MySQL语法为UNLIMITED连接输出所需的结果?
暂停:不确定,我怎么能更好地说出来。 有两个表通过第三个表(用户角色)相关联。 应根据查询JOIN语句将记录排列为JSON层次结构。
请参阅MSSQL soulution:https://docs.microsoft.com/en-us/sql/relational-databases/json/format-query-results-as-json-with-for-json-sql-server
答案 0 :(得分:1)
此查询返回您想要的内容,但它只能在MySQL 8.0或更高版本上运行
SELECT JSON_OBJECT('id', users.id, 'name', users.name, 'roles', JSON_ARRAYAGG(JSON_OBJECT('id', roles.id, 'name', roles.name)))
FROM users
INNER JOIN user_roles
ON users.id = user_roles.userid
INNER JOIN roles
ON user_roles.roleid = roles.id
GROUP BY users.id;