このJSON:を有するUpdateing MySQLのJSONフィールド
{
f1: "abc",
f2: [
{id: 1, val:"a"},
{id: 2, val:"b"},
{id: 3, val:"c"}
],
f3: [
"a",
"b",
"c"
]
}
更新:
SELECT JSON_SEARCH(
'{"f1": "abc", "f2": [{"id": "1", "val":"a"},{"id": "2", "2":"b"},{"id": 3, "val":"2"}], "f3": ["a","b","c"]}',
'all', '1', null, '$.f2[*].id');
は> [2-ために必要なパスを返すID == 1 Iは次いで缶:例として
select json_set(
'{"f1": "abc", "f2": [{"id": "1", "val":"a"},{"id": "2", "2":"b"},{"id": 3, "val":"2"}], "f3": ["a","b","c"]}',
'$.f2[0].val', 'd');
を使用してデータを更新してください。
しかし
SELECT JSON_SEARCH(
'{"f1": "abc", "f2": [{"id": 1, "val":"a"},{"id": "2", "2":"b"},{"id": 3, "val":"2"}], "f3": ["a","b","c"]}',
'all', '1', null, '$.f2[*].id');
〔2-見つけることができません>のid == 1。
SELECT JSON_SEARCH(
'{"f1": "abc", "f2": [{"id": 1, "val":"a"},{"id": "2", "2":"b"},{"id": 3, "val":"2"}], "f3": ["a","b","c"]}',
'all', 1, null, '$.f2[*].id');
=========
アップデート2ませんどちらも: を私は単なる文字列としてIDが保存されます...しかし、今、私はonother問題を抱えている:
SELECT JSON_SEARCH(
'{"mm": [{"id":"1","field":"test","value":33}]}',
'one', '1', null, '$.mm[*].id') as path;
が動作していない
SELECT * FROM document_data where document_id=5;
update document_data set data=JSON_SET(data, '$.mm', json_array()) where document_id=5;
update document_data set data=JSON_ARRAY_APPEND(data, '$.mm', '{"id":"1","field":"test","value":33}') where document_id=5;
SELECT JSON_SEARCH(data, 'one', '1', null, '$.mm[*].id') as path from document_data where id='5';
を進めています。引用されているようです。 誰かを助けることができますか?
==========
は、どのように私は、ID == 2がJSON_SETを使用してF2キーを更新することができますか?
私はそれ以外の方法を試してみることはできません。
感謝 ルネ
もしあなたがすべてを試してみたら、少なくともあなたがした試行を投稿してください。あなたの質問を投稿して、それが働くように助けてくれるようにしてください。 – ProEvilz
あなたの質問は明確ではなく、あなたが言及した新しい問題を再現することはできません。[db-fiddle](https://www.db- fiddle.com/f/mYyYHrd4PHDL7nQW1YALKd/0)。 – wchiquito
問題が解決しました。文字列をjsonに変換しないと... –