2017-06-19 48 views
3

我目前正在使用PostgreSQL JSON功能來創建JSON對象而不是我的查詢,所以我可以在我的應用程序中輕鬆使用它或將它傳遞給前端。如何做與N列array_to_json(array_agg(tags。*))完全相同的東西

array_to_json(array_agg(tags.*))確實在我需要的時候(創建帶有列的JSON對象作爲數據中的鍵並將其轉換爲數組),但是我還沒有找到任何方法如果我只需要一個或兩個來自標籤的列。我玩過各種JSON和數組函數,但我從來沒有達到過相同的結果。感謝您的幫助

整個查詢

SELECT 
    tags_components.component_id, 
    array_to_json(array_agg(tags.*)) as tags 
FROM tags_components 
LEFT JOIN tags ON tags.id = tags_components.tag_id 
AND tags_components.component_name = 'company' 
GROUP BY tags_components.component_id 

回答

4

使用派生表,例如:

SELECT 
    tags_components.component_id, 
    array_to_json(array_agg(tags.*)) as tags 
FROM tags_components 
LEFT JOIN (
    SELECT id, name -- only two columns 
    FROM tags 
    ) tags 
ON tags.id = tags_components.tag_id 
AND tags_components.component_name = 'company' 
GROUP BY tags_components.component_id 
+0

有趣的是,我不會想到的是,它確實有效:) –

相關問題