簡體   English   中英

從SQL返回json對象的數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM