【问题标题】:MySql get rows into single JSON objectMySql 将行放入单个 JSON 对象
【发布时间】:2020-03-20 21:28:45
【问题描述】:

我有桌子:

 -------+-------
| param | value |
|-------+-------|
|     A |  200.5|
|     B |   70.2|
 ---------------

当我执行时:

select json_object(`param`, `value`) from `table`

我明白了:

{"A": "200.5"}
{"B": "70.2"}

但我想要这个:

{
 "A": "200.5",
 "B": "70.2"
}

【问题讨论】:

    标签: mysql json object mysql-5.5


    【解决方案1】:

    您可以使用json aggregate function json_objectagg(),自 MySQL 5.7 起可用:

    select json_objectagg(param, value) js from mytable
    

    Demo on DB Fiddle

    | js | | :------------------------ | | {“A”:200.5,“B”:70.2} |

    在早期版本中,json 聚合函数不可用,您可以进行字符串连接:

    select concat('{', group_concat('"', param, '": ', value separator ', '), '}') js
    from mytable
    

    Demo on DB Fiddle

    【讨论】:

    • 再次感谢GMB,但我使用的服务器是5.5 ;-(
    • @iMarh:我用早期版本的解决方案更新了我的答案。
    【解决方案2】:

    我假设您不想直接从 MySQL 服务器获取此结果,如果是这种情况,最接近答案的是 How to convert result table to JSON array in MySQL

    如果您对进一步获取结果感到满意,您始终可以使用您选择的语言对其进行解析。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2018-06-30
      • 1970-01-01
      相关资源
      最近更新 更多