2012-05-18 18 views
2

我有一個user_lists表,其中包含一個類型爲integer []的user_list列。postgresql:任何返回數組的子查詢

我試圖做到這一點查詢,這似乎是基本夠用了:

select id, alias from users where id = ANY(select user_list from user_lists where id = 2 limit 1);

它給這個錯誤:

錯誤:運營商不存在:整數=整數[]
提示:沒有操作符匹配給定的名稱和參數類型。您可能需要添加顯式類型轉換。

我使用的是postgres 8.3.11。升級不是一種選擇。

我錯過了什麼?

回答

5

試試這個:

select id, alias from users 
where (select user_list from user_lists where id = 2 limit 1) 
@> ARRAY[id]; 
+0

哇。魔法。謹慎解釋這一點? –

+1

ARRAY_1 @> ARRAY_2表示「ARRAY_1包含ARRAY_2」 –

1

您也可以嘗試這樣的事情(應該在8.3工作,沒有一個手):

SELECT u.id, u.alias 
FROM users u JOIN user_lists ul ON u.id = ANY(ul.user_list) 
WHERE ul.id = 2; 

哦,你是缺少一些錯誤修正(8.3.18是最新的),我期望8.3很快就會報廢,因此在下一年左右升級確實需要成爲一種選擇。