sql >> データベース >  >> RDS >> PostgreSQL

演算子が存在しません:ANYを使用したクエリのinteger =integer []

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

    ANY関数のドキュメントを指定します

    ...左側の式はintegerであるため、エラーは理にかなっています。 -列b -右側の式はintegerの配列です。 s、またはinteger[] 、したがって、比較はintegerの形式になります。 =integer[] 、演算子がないため、エラーが発生します。

    unnest integer[]を使用する valueは、左側と右側の式をintegerにします。 sなので、比較を続けることができます。

    変更された SQL Fiddle 。

    注: INを使用した場合も同じ動作が見られます = ANYの代わりに 。



    1. パッケージ内で現在実行中のプロシージャ名

    2. XEvent Profilerを使用して、SQLServerでクエリをキャプチャします

    3. パラメータの数/タイプを知らなくても機能を削除しますか?

    4. Railsマルチテナントアーキテクチャ、複数のテナントへのアクセスの範囲