2017-07-24 3 views
0

So erhalten Sie eine JSON_OBJECT() von 3 Spalten, deren einige bereits eine JSON-Formatzeichenfolge enthält.MySQL JSON_OBJECT() mit einigen Feldern, die bereits JSON enthalten String

Hier ist mein Beispiel mit info Feld, das eine JSON-Zeichenfolge enthält, so das alles Objekt entkommen ist:

SELECT 
    T1.id, 
    CONCAT(
     '{"elements": [', 
     GROUP_CONCAT(
      JSON_OBJECT(
       'type', T2.`type`, 
       'data', T2.`data`, 
       'info', T2.`info` <<-- JSON stored string in varchar(100) 
      ) 
     ), 
     ']}' 
    ) AS `elements`, 
FROM `table` T1 
INNER JOIN `table2` T2 
    ON T1.`id` = T2.`fk_t1_id` 
GROUP BY T1.`id` 

Vielleicht wird die neuen Speicherfunktionen für JSON-Format besser sein, aber ich habe nicht teste es noch. Was denken Sie ?

Antwort

0

beste Lösung, die ich gefunden ist JSON_MERGE() in Kombination zu verwenden, mit JSON_OBJECT() und CONCAT()

SELECT 
    T1.id, 
    CONCAT(
     '{"elements": [', 
     GROUP_CONCAT(
      JSON_MERGE(
       JSON_OBJECT(
        'type', T2.`type`, 
        'data', T2.`data` 
       ), 
       CONCAT('{"info": ', T2.`info`, '}') 
      ) 
     ), 
     ']}' 
    ) AS `elements`, 
FROM `table` T1 
INNER JOIN `table2` T2 
    ON T1.`id` = T2.`fk_t1_id` 
GROUP BY T1.`id` 
Verwandte Themen