Ich habe eine Tabelle in einer MySQL 5.7.12-Datenbank mit einer JSON-Spalte.
Die Daten in der Spalte haben die folgende Struktur (das JSON-Array kann mehrere JSON-Objekte enthalten):
[{"ste": "I", "tpe": "PS"}, {"ste": "I", "tpe": "PB"}]
Ich möchte eine UPDATE
查询,将tpe=PB
的ste
Wertänderung programmieren.
Das ist mein Versuch:
更新用户SET ext = JSON_SET(JSON_SEARCH(ext, 'one', 'PB', NULL, '$**.tpe'), '$.tpe', 'A');
Die Ausgabe der Abfrage sollte sein:
[{"ste": "I", "tpe": "PS"}, {"ste": "A", "tpe": "PB"}]
Es funktioniert nicht – es aktualisiert die Spalte auf:
"$[0].tpe"
Wie sorge ich dafür, dass es funktioniert?
Bearbeiten
Ich denke, das macht mehr Sinn, aber es gibt immer noch Probleme mit der Syntax
UPDATE user SET ext = JSON_SET(ext->JSON_SEARCH(ext, 'one', 'PS', NULL, '$**.tpe'), '$.tpe', 'A');
希望你仍然需要这个。
尝试在你的
JSON_SET
中使用变量路径。使用JSON_SEARCH
来获取变量路径,然后用绝对路径tpe
替换为ste
来更新其值。对我有效!