Mysql
在 JSON 數組中提取 JSON 對象,然後根據 ID 進行搜尋
我在提取 JSON 列中的數據時遇到問題。與關係表不同,我是這種 JSON 方法的新手。
**範例表:**每分鐘/秒所有網站活動將與時間戳一起保存在 1 列中。
**預期表:**我想製作的是提取特定 id 的對象詳細資訊,因此我可以擁有該對象的完整表。
SELECT dtime, activity.id, activity.ssl, activity.online, activity.cert FROM logs WHERE activity.id = 3
數據庫小提琴:
https://dbfiddle.uk/?rdbms=mariadb_10.4&fiddle=7982cd1738b4fc594fb033403a492a6c
最後,我發現了問題。
- 如果支持 JSON 函式,請確保檢查版本。
- MySQL8+
- MariaDB 10.6.0+
就我而言,這很容易解決,
JSON_TABLE
就像這篇文章“read json array on mysql query”一樣SELECT dtime, get_activity.* FROM logs, JSON_TABLE( activity, '$[*]' COLUMNS ( `id` int(11) PATH '$.ID', `ssl` int(1) PATH '$.SSL', `online` int(1) PATH '$.Online', `cert` text PATH '$.Cert' ) ) get_activity WHERE get_activity.id = 3;
所有結果:
使用WHERE過濾器的結果: