在關系型數據庫 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