エラーメッセージ部分に基づく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
の代わりに 。