group_concat函数怎么样才能平装出这样的数据结构?[ { "id": 1678719338955169794, "name":"测试权限995" }, { "id": 1678719338955169794, "name":"测试权限994" } ],使用的是kingbase数据库
时间: 2023-07-17 19:02:08 浏览: 83
MySQL中group_concat函数深入理解
5星 · 资源好评率100%
在KINGBASE数据库中,可以使用以下方式将多个行合并为一个JSON数组:
```sql
SELECT CONCAT('[',
STRING_AGG(
CONCAT('{"id":', rm.menu_id, ',"name":"', m.menu_name, '"}'),
','
),
']'
) AS json_array
FROM role_menus rm
LEFT JOIN menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = 1678361105340755969;
```
这个查询使用了STRING_AGG函数来将多个行的结果串联起来,并使用CONCAT函数为每一行构造一个JSON对象。最后,使用CONCAT函数将所有的JSON对象拼接成一个数组。在这个例子中,假设role_menus表包含menu_id列,而menu表包含menu_id和menu_name列。请根据你的实际情况适当调整表名和列名。
这样的查询将返回一个名为json_array的列,其中包含所需的JSON数组。注意,KINGBASE数据库中没有内置的GROUP_CONCAT函数,所以我们使用了STRING_AGG函数来实现类似的功能。
阅读全文