MySQL/MariaDB: Add value to array

revision 61aaf0930456b86d8cbc177385ff4805a024d4ca

raw

1-add.sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
UPDATE node_data
JOIN nodes ON nodes.id = node_data.node_id
SET external = "{}"
WHERE
  node_data.external IS NULL
  AND nodes.available_for_rent = 1;
 
UPDATE node_data
JOIN nodes ON nodes.id = node_data.node_id
SET external = JSON_SET(external, '$.export_portals', JSON_ARRAY())
WHERE
  NOT JSON_CONTAINS_PATH(external, 'all', '$.export_portals')
  AND nodes.available_for_rent = 1;
 
UPDATE node_data
JOIN nodes ON nodes.id = node_data.node_id
SET external = JSON_ARRAY_APPEND(external, '$.export_portals', 'hpm-api')
WHERE
  NOT JSON_CONTAINS(external, '["hpm-api"]', '$.export_portals')
  AND nodes.available_for_rent = 1;
 
raw

2-remove.sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
UPDATE node_data
JOIN nodes ON nodes.id = node_data.node_id
SET external = JSON_REMOVE(external, JSON_UNQUOTE(JSON_SEARCH(external, 'one', 'hpm-api', NULL, '$.export_portals')))
WHERE
  JSON_CONTAINS(external, '["hpm-api"]', '$.export_portals')
  AND nodes.available_for_rent = 1;
 
UPDATE node_data
JOIN nodes ON nodes.id = node_data.node_id
SET external = JSON_REMOVE(external, '$.export_portals')
WHERE
  external->'$.export_portals' = JSON_ARRAY()
  AND nodes.available_for_rent = 1;
 
UPDATE node_data
JOIN nodes ON nodes.id = node_data.node_id
SET external = NULL
WHERE
  external = JSON_OBJECT()
  AND nodes.available_for_rent = 1;
 

History