首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mysql从连接的记录构建层次结构

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

Stack Overflow用户
提问于 2017-11-03 06:23:32
回答 1查看 133关注 0票数 0
代码语言:javascript
复制
Table1 (users): id, name
Table2 (roles): id, name
Table3 (user-roles): userid, roleid

以下JSON中的预期结果:

代码语言:javascript
复制
{
  "id":1,
  "name":"username",
  "roles":[
     {
       "id":1
       "name":"admin"
     },
     {
       "id":2,
       "name":"community manager"
     }
  ]
}

是否有一种MySQL语法可以输出无限连接所需的结果?

等待:不确定,我怎么才能说得更好呢?有两个表通过第三个表(user-roles)相互关联。记录应该根据查询连接语句以JSON形式排列到层次结构中。

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

EN

回答 1

Stack Overflow用户

发布于 2017-11-03 07:53:19

此查询返回您想要的内容,但它只能在MySQL 8.0或更高版本上运行

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47085544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档