2014-01-29 59 views
0

我試圖確定postgres數組字段中的值是否與另一個表中的值相對應。如何找出數組中的值是否存在於Postgres表中

我有一個表:汽車

id | name | contents 
1 | Ford | {1, 3, 5} 

和表:內容

id | name | desc 
1 | Phone | .... 
2 | Keys | .... 

我想看看,如果任何內容(場)的價值在任何內容IDS(對應表)。這是一個Postgres數據庫。

+0

壞的方式:你需要一個關係表汽車<> --->內容 – venergiac

+0

它不允許整數[]整數之間的陣列。 –

回答

0

SELECT * FROM內容其中id中(選擇UNNEST(從轎車內容))

0

可以使用<@運營商(陣列式-通過),這是可轉位使用intarray分機的GiST的opclasses:

SELECT ... 
FROM cars 
INNER JOIN contents ON (ARRAY[contents.id] @< cars.contents); 

或使用= ANY

SELECT ... 
FROM cars 
INNER JOIN contents ON (contents.id = ANY (cars.contents)); 

...但是這可能是mismodelling;您應該可以在兩個表之間建立一個連接表來模擬這個m:n關係,而不是將其推送到數組中。

參見:

相關問題