как обновить столбец типа данных json в mysql 5.7.10?

<p>я недавно начал использовать mysql 5.7.10, и мне очень нравится нативный тип данных json.</p><p>но я столкнулся с проблемой при обновлении значения типа json.</p><p><strong>вопросы:</strong></p><p>ниже приведен формат таблицы, здесь я хочу добавить еще 1 ключ в столбец json <code>data</code> для <code>t1</code> стол. прямо сейчас я должен получить значение, изменить его и обновить таблицу. так что это включает в себя дополнительный оператор <code>select</code>.</p><p>я могу вставить вот так</p><pre><code>insert into t1 values ('{"key2":"value2"}', 1); mysql> select * from t1; +--------------------+------+ | data | id | +--------------------+------+ | {"key1": "value1"} | 1 | | {"key2": "value2"} | 2 | | {"key2": "value2"} | 1 | +--------------------+------+ 3 rows in set (0.00 sec) mysql>show create table t1; +-------+------------------------------------------------------------- -------------------------------------------------------+ | table | create table | +-------+--------------------------------------------------------------------------------------------------------------------+ | t1 | create table `t1` ( `data` json default null, `id` int(11) default null ) engine=innodb default charset=latin1 | +-------+--------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) </code></pre><p>есть ли обходной путь для этого?</p>

<p>спасибо @wchiquito за указание правильного направления. я решил проблему. вот как я это сделал.</p><pre><code>mysql> select * from t1; +----------------------------------------+------+ | data | id | +----------------------------------------+------+ | {"key1": "value1", "key2": "value2"} | 1 | | {"key2": "value2"} | 2 | | {"key2": "value2"} | 1 | | {"a": "x", "b": "y", "key2": "value2"} | 1 | +----------------------------------------+------+ 4 rows in set (0.00 sec) mysql> update t1 set data = json\_set(data, "$.key2", "i am id2") where id = 2; query ok, 1 row affected (0.04 sec) rows matched: 1 changed: 1 warnings: 0 mysql> select  from t1; +----------------------------------------+------+ | data | id | +----------------------------------------+------+ | {"key1": "value1", "key2": "value2"} | 1 | | {"key2": "i am id2"} | 2 | | {"key2": "value2"} | 1 | | {"a": "x", "b": "y", "key2": "value2"} | 1 | +----------------------------------------+------+ 4 rows in set (0.00 sec) mysql> update t1 set data = json_set(data, "$.key3", "i am id3") where id = 2; query ok, 1 row affected (0.07 sec) rows matched: 1 changed: 1 warnings: 0 mysql> select * from t1; +------------------------------------------+------+ | data | id | +------------------------------------------+------+ | {"key1": "value1", "key2": "value2"} | 1 | | {"key2": "i am id2", "key3": "i am id3"} | 2 | | {"key2": "value2"} | 1 | | {"a": "x", "b": "y", "key2": "value2"} | 1 | +------------------------------------------+------+ 4 rows in set (0.00 sec) </code></pre><p> <a href="https://i.stack.imgur.com/9fwna.png"><img src="https://i.stack.imgur.com/9fwna.png" alt="enter image description here"></a> </p>