<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed><type>rich</type><version>1.0</version><provider_name>phorkie</provider_name><provider_url>https://p.cweiske.de/</provider_url><title>MySQL/MariaDB: Add value to array</title><author_name>Christian Weiske</author_name><cache_age>86400</cache_age><width>900</width><height>900</height><html>&lt;!-- embedding all files of https://p.cweiske.de/664 --&gt;
&lt;link rel="stylesheet" href="https://p.cweiske.de/css/embed.css"/&gt;
&lt;div class="phork" id="664"&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;style type="text/css"&gt;/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.sql .de1, .sql .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.sql  {font-family:monospace;}
.sql .imp {font-weight: bold; color: red;}
.sql li, .sql .li1 {color: #DDD;}
.sql .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.sql .kw1 {color: #993333; font-weight: bold;}
.sql .co1 {color: #808080; font-style: italic;}
.sql .coMULTI {color: #808080; font-style: italic;}
.sql .es0 {color: #000099; font-weight: bold;}
.sql .br0 {color: #66cc66;}
.sql .sy0 {color: #66cc66;}
.sql .st0 {color: #ff0000;}
.sql .nu0 {color: #cc66cc;}
.sql span.xtra { display:block; }
&lt;/style&gt;&lt;div class="code"&gt;&lt;table class="sql"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td class="ln"&gt;&lt;pre class="de1"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1"&gt;&lt;pre class="de1"&gt;&lt;span class="co1"&gt;-- make &amp;quot;external&amp;quot; an JSON object if null&lt;/span&gt;
&lt;span class="kw1"&gt;UPDATE&lt;/span&gt; node_data
&lt;span class="kw1"&gt;JOIN&lt;/span&gt; nodes &lt;span class="kw1"&gt;ON&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;id &lt;span class="sy0"&gt;=&lt;/span&gt; node_data&lt;span class="sy0"&gt;.&lt;/span&gt;node_id
&lt;span class="kw1"&gt;SET&lt;/span&gt; external &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;{}&amp;quot;&lt;/span&gt;
&lt;span class="kw1"&gt;WHERE&lt;/span&gt;
&amp;#160; node_data&lt;span class="sy0"&gt;.&lt;/span&gt;external &lt;span class="kw1"&gt;IS&lt;/span&gt; &lt;span class="kw1"&gt;NULL&lt;/span&gt;
&amp;#160; &lt;span class="kw1"&gt;AND&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;available_for_rent &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="nu0"&gt;1&lt;/span&gt;;
&amp;#160;
&lt;span class="co1"&gt;-- add &amp;quot;export_portals&amp;quot; array to &amp;quot;external&amp;quot; if it does not exist&lt;/span&gt;
&lt;span class="kw1"&gt;UPDATE&lt;/span&gt; node_data
&lt;span class="kw1"&gt;JOIN&lt;/span&gt; nodes &lt;span class="kw1"&gt;ON&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;id &lt;span class="sy0"&gt;=&lt;/span&gt; node_data&lt;span class="sy0"&gt;.&lt;/span&gt;node_id
&lt;span class="kw1"&gt;SET&lt;/span&gt; external &lt;span class="sy0"&gt;=&lt;/span&gt; JSON_SET&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;external&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'$.export_portals'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; JSON_ARRAY&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&lt;span class="kw1"&gt;WHERE&lt;/span&gt;
&amp;#160; &lt;span class="kw1"&gt;NOT&lt;/span&gt; JSON_CONTAINS_PATH&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;external&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'all'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'$.export_portals'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&amp;#160; &lt;span class="kw1"&gt;AND&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;available_for_rent &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="nu0"&gt;1&lt;/span&gt;;
&amp;#160;
&lt;span class="co1"&gt;-- add &amp;quot;hpm-api&amp;quot; value to external.export_portals&lt;/span&gt;
&lt;span class="kw1"&gt;UPDATE&lt;/span&gt; node_data
&lt;span class="kw1"&gt;JOIN&lt;/span&gt; nodes &lt;span class="kw1"&gt;ON&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;id &lt;span class="sy0"&gt;=&lt;/span&gt; node_data&lt;span class="sy0"&gt;.&lt;/span&gt;node_id
&lt;span class="kw1"&gt;SET&lt;/span&gt; external &lt;span class="sy0"&gt;=&lt;/span&gt; JSON_ARRAY_APPEND&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;external&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'$.export_portals'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'hpm-api'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&lt;span class="kw1"&gt;WHERE&lt;/span&gt;
&amp;#160; &lt;span class="kw1"&gt;NOT&lt;/span&gt; JSON_CONTAINS&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;external&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'[&amp;quot;hpm-api&amp;quot;]'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'$.export_portals'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&amp;#160; &lt;span class="kw1"&gt;AND&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;available_for_rent &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="nu0"&gt;1&lt;/span&gt;;
&amp;#160;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/664/rev-raw/bdff9ef98bd11c0fe2cc642793d808e3a8fa4ca4/1-add.sql" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/664#1-add.sql"&gt;1-add.sql&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;style type="text/css"&gt;/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.sql .de1, .sql .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.sql  {font-family:monospace;}
.sql .imp {font-weight: bold; color: red;}
.sql li, .sql .li1 {color: #DDD;}
.sql .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.sql .kw1 {color: #993333; font-weight: bold;}
.sql .co1 {color: #808080; font-style: italic;}
.sql .coMULTI {color: #808080; font-style: italic;}
.sql .es0 {color: #000099; font-weight: bold;}
.sql .br0 {color: #66cc66;}
.sql .sy0 {color: #66cc66;}
.sql .st0 {color: #ff0000;}
.sql .nu0 {color: #cc66cc;}
.sql span.xtra { display:block; }
&lt;/style&gt;&lt;div class="code"&gt;&lt;table class="sql"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td class="ln"&gt;&lt;pre class="de1"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1"&gt;&lt;pre class="de1"&gt;&lt;span class="kw1"&gt;UPDATE&lt;/span&gt; node_data
&lt;span class="kw1"&gt;JOIN&lt;/span&gt; nodes &lt;span class="kw1"&gt;ON&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;id &lt;span class="sy0"&gt;=&lt;/span&gt; node_data&lt;span class="sy0"&gt;.&lt;/span&gt;node_id
&lt;span class="kw1"&gt;SET&lt;/span&gt; external &lt;span class="sy0"&gt;=&lt;/span&gt; JSON_REMOVE&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;external&lt;span class="sy0"&gt;,&lt;/span&gt; JSON_UNQUOTE&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;JSON_SEARCH&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;external&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'one'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'hpm-api'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="kw1"&gt;NULL&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'$.export_portals'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&lt;span class="kw1"&gt;WHERE&lt;/span&gt;
&amp;#160; JSON_CONTAINS&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;external&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'[&amp;quot;hpm-api&amp;quot;]'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'$.export_portals'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&amp;#160; &lt;span class="kw1"&gt;AND&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;available_for_rent &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="nu0"&gt;1&lt;/span&gt;;
&amp;#160;
&lt;span class="kw1"&gt;UPDATE&lt;/span&gt; node_data
&lt;span class="kw1"&gt;JOIN&lt;/span&gt; nodes &lt;span class="kw1"&gt;ON&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;id &lt;span class="sy0"&gt;=&lt;/span&gt; node_data&lt;span class="sy0"&gt;.&lt;/span&gt;node_id
&lt;span class="kw1"&gt;SET&lt;/span&gt; external &lt;span class="sy0"&gt;=&lt;/span&gt; JSON_REMOVE&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;external&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;'$.export_portals'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&lt;span class="kw1"&gt;WHERE&lt;/span&gt;
&amp;#160; external&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="st0"&gt;'$.export_portals'&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; JSON_ARRAY&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&amp;#160; &lt;span class="kw1"&gt;AND&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;available_for_rent &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="nu0"&gt;1&lt;/span&gt;;
&amp;#160;
&lt;span class="kw1"&gt;UPDATE&lt;/span&gt; node_data
&lt;span class="kw1"&gt;JOIN&lt;/span&gt; nodes &lt;span class="kw1"&gt;ON&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;id &lt;span class="sy0"&gt;=&lt;/span&gt; node_data&lt;span class="sy0"&gt;.&lt;/span&gt;node_id
&lt;span class="kw1"&gt;SET&lt;/span&gt; external &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;NULL&lt;/span&gt;
&lt;span class="kw1"&gt;WHERE&lt;/span&gt;
&amp;#160; external &lt;span class="sy0"&gt;=&lt;/span&gt; JSON_OBJECT&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&amp;#160; &lt;span class="kw1"&gt;AND&lt;/span&gt; nodes&lt;span class="sy0"&gt;.&lt;/span&gt;available_for_rent &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="nu0"&gt;1&lt;/span&gt;;
&amp;#160;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/664/rev-raw/bdff9ef98bd11c0fe2cc642793d808e3a8fa4ca4/2-remove.sql" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/664#2-remove.sql"&gt;2-remove.sql&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</html></oembed>
