Mysql

在 JSON 數組中提取 JSON 對象,然後根據 ID 進行搜尋

  • February 3, 2022

我在提取 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

最後,我發現了問題。

  1. 如果支持 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過濾器的結果:

在此處輸入圖像描述

小提琴手

引用自:https://dba.stackexchange.com/questions/306938