Ich versuche die neue API für mysql 5.7, die JSON-Spalten behandelt. Meine test
Spalte sieht wie folgt aus:mysql 5.7 Anfügen von Schlüssel/Wert an verschachteltes JSON-Objekt
{"foo":{"efg":1}, "bar":{"abc":0}}
Was ich möchte, ist einer der Schlüssel tun anhängen, zum Beispiel foo
so dass es in "foo":{"efg":1, "klm":2}
führen. Was ich bisher versucht folgende their documentation:
mysql> select json_insert(test, '$.foo', 10, '$.foo.klm', 2) from table1
where name='Joe';
Was das tut, ist zu ersetzen "efg":1
und das Ergebnis ist "foo":{"klm":2}
.
mysql> select json_array_append(test, '$.foo', '{"klm":2}') from table1 where
name="Joe';
Die obige Linie wandelt offensichtlich foo
in ein Array "foo":[{"efg":1}, {"klm":2}]
, das ist nicht das, was ich will.
Ich habe versucht, die Kombination von Abfragen zusammen:
mysql> select json_insert(test, '$.foo', 10, '$.foo',
select json_merge(select json_extract(test, '$.foo') from table1
where name="Joe"), '{"klm":2}') from table1 where name="Joe";
Das gibt mir nur einen Syntaxfehler near select json_extract(test, '$.foo')
.
Jeder Rat würde sehr geschätzt werden.
@JoachimIsaksson das gewünschte Ergebnis sein sollte '{ "foo": { "efg": 1 " klm": 2}" bar ": {" abc ": 0}}'. Ihre Dokumentation arbeitet hauptsächlich mit dem Modifizieren von Arrays, aber ich möchte alles als Objekt behalten. – denikov
Ich bekomme das genaue Ergebnis mit Ihrem 'json_insert', (oder wählen Sie einfach json_insert (test, $ .foo.klm, 2) aus table1 wo name = 'Joe';' '" efg ": 1' nicht verschwinden für mich. –
@JoachimIsaksson Ich bin nicht sicher, wo das Problem dann ist. Ich habe einige Parameter, wie in Ihrem Kommentar, und es ersetzt noch alles für die "foo" 'Objekt. – denikov