数组中的PostgreSQL整数不可合并

问题描述

我想在整数数组中存在整数的条件下执行FULL OUTER JOIN。

查询看起来像这样:

SELECT thing FROM table1 t1
FULL OUTER JOIN table2 t2
ON t1.id = ANY(t2.array_of_ids)

但是出现以下错误

FULL JOIN仅在可合并合并或可哈希合并的合并条件下受支持

有没有办法使此条件可合并合并?

解决方法

嗯。 。 。这样行吗?

SELECT thing
FROM table1 t1 FULL OUTER JOIN
     (table2 t2 CROSS JOIN
      UNNEST(t2.array_of_ids) t2_id
     )
     ON t1.id = t2_id;

这个问题是它将乘以行数。那么,如何构造FULL JOIN呢?

SELECT . . .
FROM table1 t1 LEFT JOIN
     (table2 t2 CROSS JOIN
      UNNEST(t2.array_of_ids) t2_id
     )
     ON t1.id = t2_id
UNION ALL
SELECT . . .
FROM table2 t2
WHERE NOT EXISTS (SELECT 1
                  FROM UNNEST(t2.array_of_ids) t2_id JOIN
                       table1 t1
                  ON t2_id = t1.id
                 );