[英]Returning array of json objects from SQL
我是SQL的新手,所以這可能是一個愚蠢的問題,但是我在弄清楚返回JSON對象數組時遇到了麻煩。
我的代碼是
SELECT JSON_OBJECT(
'title', pc.title,
'reviews', (SELECT CAST(CONCAT('[',
GROUP_CONCAT(
JSON_OBJECT(
'username',r.uname,
'review',r.review,
'date', r.date_added
)
)
, ']')
AS JSON) FROM reviews r WHERE pc.pid=r.pid)
) AS JSON
FROM product_comp AS pc;
當沒有評論時,它會適當地返回一個空數組,而當有一個評論時,它將在數組中返回該評論。 但是,如果有多個評論,它將返回一個空數組。 我想念什么?
與其使用CONCAT進行易於出錯的格式化JSON的工作, 不如嘗試使用JSON_ARRAYAGG() 。
SELECT JSON_OBJECT(
'title', pc.title,
'reviews', JSON_ARRAYAGG(
JSON_OBJECT(
'username', r.uname,
'review', r.review,
'date', r.date_added
)
)
)
FROM product_comp AS pc
LEFT OUTER JOIN reviews AS r ON pc.pid = r.pid
GROUP BY pc.pid
我沒有測試過,但是它應該給您正確的想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.