如何使用 MySQL 聯合查詢獲取嵌套 JSON 數據?

如何使用 MySQL 聯合查詢獲取嵌套 JSON 數據?

mysql 中的聯合查詢:獲取嵌套 json 數據

在關系型數據庫 mysql 中,為了處理一對多關系,我們需要使用聯合查詢。給定一張學生表 (student) 和一張圖片表 (images),其中一張學生圖片與多個圖片相關聯,我們的目標是獲取以下 json 格式的查詢結果:

{   "id": 1,   "name": "john doe",   "images": [     {       "id": 1,       "url": "image1.jpg"     },     {       "id": 2,       "url": "image2.jpg"     }   ] }

接口實現

要實現此接口,我們可以使用以下 sql 查詢:

select   s.id,   s.name,   group_concat(json_object("id", i.id, "url", i.url)) as images from   student s left join   images i on s.id = i.l_id group by   s.id, s.name

此查詢將基于學生 id 對結果進行分組,并將圖片信息拼接成 json 字符串

另一種方法:

為了避免在分組成百上千的圖像時出現性能問題,我們可以考慮基于圖像 id 進行分組:

SELECT   s.id,   s.name,   JSON_ARRAYAGG(JSON_OBJECT("id", i.id, "url", i.url)) AS images FROM   student s LEFT JOIN   images i ON s.id = i.l_id GROUP BY   s.id, s.name

此查詢將為每張圖像生成一個 json 對象,并使用 json_arrayagg 將它們聚合到一個數組中。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享