gpt4 book ai didi

mysql - 如何从选择命令 mySQL 中组合 JSON_OBJECTS

转载 作者:行者123 更新时间:2023-11-29 15:29:17 24 4
gpt4 key购买 nike

我正在尝试从 mySQL 表中导出 json 数据,其中该行成为字典中的条目。我已经能够使用下面的代码为每一行创建条目。

SELECT JSON_OBJECT(p.link, 
JSON_OBJECT("location", p.location , "finish", p.finish, "start-date", p.startdate, "position", p.position))
FROM regattas p WHERE sailor_uuid="name"

它返回一堆看起来像这样的行。

{\"link\": {\"finish\": \"2/8\", \"location\": \"college\", \"position\": \"Crew\", \"start-date\": \"2019-03-30\"}}

这就是我想要的,但我希望每个 link:dict 条目都成为一个大 json 文档的一部分。我尝试用合并来包围它,但仍然遇到问题,因为 json 对象仅算作一个参数。有没有某种方法可以使用上面第一个代码块中的 select 返回的所有内容作为参数。

SELECT JSON_MERGE(JSON_OBJECT(p.link, JSON_OBJECT("location", p.location , "finish", p.finish, "start-date", p.startdate, "position", p.position))) FROM regattas p WHERE sailor_uuid="name"

我可能会错过一些 super 简单的答案,因为我对 mySQL 非常陌生,非常感谢任何帮助。

最佳答案

如果您使用的是 mysql 版本5.7.22+,那么您可以使用JSON_ARRAYAGG,因此查询如下所示,

SELECT JSON_ARRAYAGG(JSON_OBJECT(p.link, JSON_OBJECT("location", p.location , "finish", p.finish, "start-date", p.startdate, "position", p.position))) FROM regattas p WHERE sailor_uuid="name"

对于旧版本,您可以尝试以下解决方法:

SELECT concat('[',GROUP_CONCAT(JSON_OBJECT(p.link, JSON_OBJECT("location", p.location , "finish", p.finish, "start-date", p.startdate, "position", p.position))),']') FROM regattas p WHERE sailor_uuid="name"

但对于这种方法,请确保您的 GROUP_CONCAT 限制足够高。您可以设置group_concat_max_len参数限制。

关于mysql - 如何从选择命令 mySQL 中组合 JSON_OBJECTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58849844/

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