如何选择多行并在一列中将它们作为JSON返回?

原子

我在MySQL中有如下所示的数据(实际数据有所不同,但我只是为了使其更为简单)

注意:子级列为JSON

    SELECT id, name, children FROM people;
ID 名称 孩子们
2 插口 [“ 5”,“ 3”]
3 约翰 空值
5 莎拉 空值

子对象不能再有其他子对象,子对象不能在不同的表中,因为数据相似,并且我需要所有人员,并且我不想为每个子对象访问数据库

SELECT之后,数据应如下所示:

ID 名称 孩子们
2 插口 [{'id':'5','name':'Sara'},{'id':'3','name':'John'}]
3 约翰 空值
5 莎拉 空值

有可能,我该怎么办?

有没有更好的方法来做到这一点(没有另一个表)

疯狂流

我建议将您的表布局更改为带有parent_id列的parent-> child关系。

当前布局将json字符串值与整数列值混合在一起。当表变大时,您可能也会遇到性能问题(目前只是猜测)。

另一种方法是:

https://www.db-fiddle.com/f/jbVqtZjZbmPAZ42S8A8fbT/1

CREATE TABLE people (id INT, name TEXT, parent_id INT);
INSERT INTO people (id, name, parent_id)
VALUES 
(2,'Jack', Null),
(3,'John', 2),
(5,'Sara', 2)
;

SELECT p.id, p.name, 

(SELECT JSON_ARRAYAGG(JSON_OBJECT('id', pc.id, 'name', pc.name)) FROM people pc
WHERE pc.parent_id=p.id) AS children

FROM people p

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档