エラーメッセージ部分に基づくoperator does not exist: integer = integer[] 、bs 列はunnestである必要があります ed、右側をintegerに戻すため したがって、比較演算子は次のようになります。
WITH bar AS (
SELECT array_agg(b) AS bs
FROM foo
WHERE c < 3
)
SELECT a
FROM foo
WHERE b = ANY ( SELECT unnest(bs) FROM bar);
これにより、次の出力が得られます:
A
2
3
...左側の式はintegerであるため、エラーは理にかなっています。 -列b -右側の式はintegerの配列です。 s、またはinteger[] 、したがって、比較はintegerの形式になります。 =integer[] 、演算子がないため、エラーが発生します。
unnest integer[]を使用する valueは、左側と右側の式をintegerにします。 sなので、比較を続けることができます。
変更された
注: INを使用した場合も同じ動作が見られます = ANYの代わりに 。