gpt4 book ai didi

mysql - 使用 mysql 从连接记录构建层次结构

转载 作者:行者123 更新时间:2023-11-29 10:32:44 25 4
gpt4 key购买 nike

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 语法可以输出无限连接所需的结果?

等待:不确定,我该如何更好地表达这一点。有两个表通过第三个表(用户角色)相关联。应根据查询 JOIN 语句将记录排列为 JSON 层次结构。

参见MSSQL解决方案:https://learn.microsoft.com/en-us/sql/relational-databases/json/format-query-results-as-json-with-for-json-sql-server

最佳答案

此查询返回您想要的内容,但它仅适用于 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;

关于mysql - 使用 mysql 从连接记录构建层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com