我正在嘗試從列中的嵌套 JSON 中提取一個值。我得到了回傳值,但我也無法提取該值系結到的第一個 JSON 鍵。
查詢僅拉出 1 行。
示例 json:
{
"key1": {
"data1": "data1 object",
"data2": "data2 object"
},
"key2": {
"data1": "data1 object",
"data2": "data2 object"
}
}
其中關鍵key值是動態的,關鍵data值是靜態的。
預期結果:
{
"key1": {
"data1": "data1 object"
},
"key2": {
"data1": "data1 object"
}
}
或者
{
"key1": "data1 object",
"key2": "data1 object"
}
不完美的作業查詢:
SELECT
json->>"$.*.data1" AS data
FROM table
WHERE id=1;
輸出:
[
"data1 object",
"data1 object"
]
uj5u.com熱心網友回復:
SELECT test.id, JSON_OBJECTAGG(jsonkeys.onekey, jsonvalues.onevalue) output
FROM test
CROSS JOIN JSON_TABLE(JSON_KEYS(test.jsondata),
'$[*]' COLUMNS (onekey VARCHAR(255) PATH '$')) jsonkeys
CROSS JOIN JSON_TABLE(JSON_EXTRACT(test.jsondata, CONCAT('$.', jsonkeys.onekey)),
'$.data1' COLUMNS (onevalue VARCHAR(255) PATH '$'))jsonvalues
GROUP BY test.id
https://dbfiddle.uk/uNpzif3g
uj5u.com熱心網友回復:
能夠使用 using 解決它JSON_KEYS(),有效地回傳地圖。我已經檢查并測驗了索引是否總是相關并且它們確實相關。
更新查詢:
SELECT
JSON_KEYS(json) AS map,
json->>"$.*.data1" AS data
FROM table
WHERE id=1;
結果:
| 地圖 | 資料 |
|---|---|
| [“key1”,“key2”] | ["data1 物件", "data1 物件"] |
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518120.html
標籤:mysqlsqljson
下一篇:未連接到服務器時如何訪問資料庫?
