2016-11-29 81 views
0

我想建立一個查詢,將進入一個表。從jsonb列中獲取一些數據,然後進一步查詢這些數據。postgres jsonb與問題

WITH id_list AS (
    SELECT 
    data #>> '{embeds, related, content, pinned}' 
    FROM 
    content 
    WHERE 
    site_id = 5 
    AND 
    length(data #>> '{embeds, related, content, pinned}') > 0 
    LIMIT 1 
) 

SELECT 
    id 
FROM 
    content 
WHERE 
    content.id IN id_list 

當我運行的第一選擇它返回

["446001", "445989", "445980", "445962", "445965"] 

這是正確的,我爲什麼不能查詢對數組中的值?

我還試圖找出是否有可能刪除第一個查詢的限制和平坦的結果有一個大數組來查詢。

回答

0

使用WITH正確的方法是把它當作一個表,並做了選擇就可以了,就像這樣:

WITH id_list AS (
    SELECT 
    (data #>> '{embeds, related, content, pinned}') as ids 
    FROM 
    content 
    WHERE 
    site_id = 5 
    AND 
    length(data #>> '{embeds, related, content, pinned}') > 0 
    LIMIT 1 
) 

SELECT 
    id 
FROM 
    content 
WHERE 
    content.id IN (select ids from id_list); 

關於如何使用正確使用進一步參考見https://www.postgresql.org/docs/current/static/queries-with.html