我試圖確定postgres數組字段中的值是否與另一個表中的值相對應。如何找出數組中的值是否存在於Postgres表中
我有一個表:汽車
id | name | contents
1 | Ford | {1, 3, 5}
和表:內容
id | name | desc
1 | Phone | ....
2 | Keys | ....
我想看看,如果任何內容(場)的價值在任何內容IDS(對應表)。這是一個Postgres數據庫。
我試圖確定postgres數組字段中的值是否與另一個表中的值相對應。如何找出數組中的值是否存在於Postgres表中
我有一個表:汽車
id | name | contents
1 | Ford | {1, 3, 5}
和表:內容
id | name | desc
1 | Phone | ....
2 | Keys | ....
我想看看,如果任何內容(場)的價值在任何內容IDS(對應表)。這是一個Postgres數據庫。
SELECT * FROM內容其中id中(選擇UNNEST(從轎車內容))
可以使用<@
運營商(陣列式-通過),這是可轉位使用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關係,而不是將其推送到數組中。
參見:
壞的方式:你需要一個關係表汽車<> --->內容 – venergiac
它不允許整數[]整數之間的陣列。 –