我正在使用 JSON 型別將一些資料存盤在表中,并且在獲取資料時對所述資料進行排序時遇到了一些問題。
示例資料:
{"574161434674462720":1,"870013663581437952":6,"903739315782320168":3,"913739315950071829":1}
這里的 json 是按它的鍵排序的,而它的存盤很好,但是當我嘗試使用它來獲取它時,"SELECT json -> '$.*' FROM table"它保持相同的順序。
輸出: ('[1, 6, 3, 1]',)
我嘗試了一些時髦的東西,例如:
"SELECT json -> '$.*' FROM table ORDER BY CAST(json -> '$.*' AS UNSIGNED) ASC"
但是輸出還是一樣的。
我希望能夠得到類似的輸出:
["870013663581437952":6, "903739315782320168":3, "574161434674462720":1, "913739315950071829":1]
或類似的規定。
uj5u.com熱心網友回復:
如果要對 JSON 陣列中的值進行排序,則必須將陣列決議為單個元素,然后根據需要的順序重建它。
SELECT JSON_ARRAYAGG(jsontable.value) OVER (ORDER BY jsontable.value) sorted
FROM test
CROSS JOIN JSON_TABLE(test.jsondata -> '$.*',
'$[*]' COLUMNS (value INT PATH '$')) jsontable
ORDER BY sorted DESC LIMIT 1
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=120495fc6f53829d83681d6f3ff574d4
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/347006.html
標籤:mysql json mysql-json
