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

jsonb_array_elementsを直接クエリできないのはなぜですか?

    エラーメッセージにあるように、WHEREへの引数 セットを返してはいけません。 jsonb_array_elements セットを返し、単一の値と比較することはできません。 2番目のクエリでは、select内にクロス結合があり、WHEREを使用するのに適した結果に変換されます。 オン。

    この方法でもできます

    SELECT mydata.pk FROM mydata
      WHERE 'Bob' in (SELECT jsonb_array_elements(mydata.data->'people')->>'name');
    

    ここで副選択すると、INを使用できるようになります 結果がセットではなくなったため、演算子を使用して目的の値を見つけます。

    もう1つの方法は、jsonbに直接クエリを実行することです

    SELECT mydata.pk FROM mydata
      WHERE mydata.data->'people' @> '[{"name":"Bob"}]'::jsonb;
    

    このように、jsonbを結果セットに変換してその中を検索する必要はありません。




    1. ユニティでc#を使用してMySQLデータベースにアクセスしますか?

    2. OracleSQLで関連するアイテムのグループを選択する方法

    3. MySQL-複雑な計算のUPDATEクエリパフォーマンスを改善

    4. PythonでのMongoEngineによるインデックス作成の処理