This is continuation of Insert into a MySQL table or update if exists, but this time i want to update the json entry in mysql
Below is the schema:
CREATE
The following script can be useful for your requirement:
INSERT INTO `TAG_COUNTER`
(`account`, `time_id`, `counters`)
VALUES
('google', '20180510', '{"gmail_page_viewed": 1, "search_page_viewed": 50}'),
('google', '20180510', '{"gmail_page_viewed": 1, "search_page_viewed": 50}'),
('google', '20180511', '{"gmail_page_viewed": 1, "search_page_viewed": 100}'),
('google', '20180511', '{"gmail_page_viewed": 1, "search_page_viewed": 100}'),
('google', '20180511', '{"gmail_page_viewed": 1, "search_page_viewed": 100}')
ON DUPLICATE KEY UPDATE `counters` =
JSON_SET(`counters`,
'$."gmail_page_viewed"',
IFNULL(`counters` ->> '$."gmail_page_viewed"', 0) + 1,
'$."search_page_viewed"',
IFNULL(`counters` ->> '$."search_page_viewed"', 0) + 1
);
See dbfiddle.