【问题标题】:MySQL, json, JSON_ARRAY_APPEND - why will append not work on 5.7.13?MySQL、json、JSON_ARRAY_APPEND - 为什么 append 在 5.7.13 上不起作用?
【发布时间】:2016-06-08 05:50:07
【问题描述】:

究竟如何将数据插入到 json mysql 字段中。

我可以创建记录

INSERT INTO git_object (user_id,git_meta,last_update) VALUES ('11111','[{"host": "a", "id": "1"}]',(select now()));

如何追加到数组。

SELECT JSON_ARRAY_APPEND(git_meta, '$', '{"host": "b"}') FROM git_object where user_id='11111'

我尝试了上述方法。我能从下面得到什么?

SELECT * FROM git_object;

'[{"id": "1", "host": "a"}]'

我做错了什么

MySQL 版本“5.7.13”

【问题讨论】:

  • 第二个查询是一个选择,没有对基础数据进行任何修改。你到底想达到什么目标?
  • 我要修改。追加到存储在表中的 json 对象。
  • 要修改数据,您需要更新 sql 命令,而不是选择。用于更新任何字段的相同命令。

标签: mysql json


【解决方案1】:

要修改存储在任何表中的数据,您需要使用update sql 命令,而不是选择。

Update git_object
set  git_meta=JSON_ARRAY_APPEND(git_meta, '$', '{"host": "b"}')
where user_id='11111'

【讨论】:

    【解决方案2】:

    使用JSON_ARRAY_APPEND(git_meta, '$', JSON_OBJECT('host','b'))

    而不是JSON_ARRAY_APPEND(git_meta, '$', '{"host": "b"}')

    【讨论】:

    • 这里是 JSON_OBJECT dev.mysql.com/doc/refman/8.0/en/…的参考
    • 谢谢,我的问题是 JSON_ARRAY_APPEND(git_meta, '$', '{"host": "b"}') 会附加一个字符串而不是一个 json 对象。使用JSON_OBJECT 有效。
    • 完美,我正在寻找这个 JSON_OBJECT() 解决方案。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多