2013-04-05 68 views
3

我使用array_agg()函數將多行轉換爲數組, 我需要將該數組賦給select語句的條件。Postgresql從數組中選擇值

我的查詢,

SELECT * FROM table WHERE id = 
    ALL(SELECT array_agg(id) FROM table WHERE some_condition) 

,但它給錯誤,我怎麼能到這兒來呢..

+0

和錯誤? – h22 2013-04-05 06:23:27

+0

你得到的錯誤是什麼? – 2013-04-05 06:23:40

+0

錯誤:運算符不存在:bigint = bigint []提示:沒有運算符匹配給定的名稱和參數類型。您可能需要添加顯式類型轉換。 – 2013-04-05 06:26:00

回答

3

錯誤已被鑄造型數組清除,用我這樣的查詢

SELECT * FROM table WHERE id = 
    ALL((SELECT array_agg(id) FROM table WHERE some_condition)::bigint[]) 

reference link

1

好像你是過於複雜的事情。據我所知,您的查詢應該是等同於簡單:

SELECT * FROM table WHERE some_condition 

或者,如果你是從2個不同的表中選擇,使用加入:

SELECT table1.* 
FROM table1 
JOIN table2 ON table1.id = table2.id 
WHERE some_condition 

這不僅是簡單的,它比數組擺弄還快。

+0

我需要記錄的數量, – 2013-04-05 06:34:01

+0

這是沒有提到你的問題。 'SELECT count(*)...'有什麼問題? – mvp 2013-04-05 06:35:41