sql >> Database teknologi >  >> RDS >> Mysql

JSON Indsæt i en MySQL-tabel eller opdater, hvis den findes

Følgende script kan være nyttigt til dit krav:

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
  );

Se dbfiddle .




  1. Hvornår skal man bruge kommaseparerede værdier i en DB-kolonne?

  2. ORACLE Efter opdateringstrigger:løser ORA-04091 mutationstabelfejl

  3. Kan ikke se MySQL BIT-feltværdien, når du bruger SELECT

  4. Sådan ændres standarddatabasens mailprofil for en bruger i SQL Server (T-SQL)