Обновить вложенный Json в Mysql / Mariadb

{
"people": {
    "Man": {Employe:50, Student:91, Artist:80, Clark:50},
    "Woman": {Employe:21, Student:01, Artist:00, k3:30, Clark:68}
      }
}

Как я могу обновить значение "Работать" из объекта "Человек". Я хочу что-то похожее на запрос mysql ниже.

UPDATE TABLE SET Column=JSON_SET(Column, '$.people.Man.Employe', '51') where Id=1234567890;

MariaDB [**********]> SELECT VERSION();

+--------------------------------------------+
| VERSION()                                  |
+--------------------------------------------+
| 10.3.17-MariaDB-1:10.3.17+maria~bionic-log |
+--------------------------------------------+

2 ответа

Решение

Во-первых, исправьте keys в столбце JSON, добавив кавычки для каждого, и values добавляя кавычки для некоторых, которые начинаются с нулей и заканчиваются другими цифрами.

Затем примените:

UPDATE tab
   SET Col = JSON_SET(
       Col,
       "$.people.Man.Employee", "50",
       "$.people.Man.Employee", "51"
       )
 WHERE ID = 1234567890;

Demo

Даже, я не вижу никакой проблемы со следующим

      UPDATE tab
SET 
    Col = JSON_SET(Col, '$.people.Man.Employee', '51')
WHERE
    Id = 1234567890;

Демо

Другие вопросы по тегам