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

Postgresqlはjson配列の外部結合を残しました

    あなたの質問に答えるために:はい、それは可能であり、あなたのクエリはまさにそれを行います。fooに3番目の行を導入することでそれを証明できます 表: http://sqlfiddle.com/#!15/06dfe/2

    あなたの問題はLEFT JOINではありません json_array_elementsへ ただし、暗黙的な横方向のクロス結合があります。クエリは次と同等です:

    SELECT *
    FROM foo 
      CROSS JOIN LATERAL json_array_elements (foo.bars :: json) foo_bars 
      LEFT OUTER JOIN bar ON (foo_bars ->> 'id') :: BIGINT = bar.ID;
    

    http://sqlfiddle.com/#!15/06dfe/5

    必要なのは、foo間の横方向の左結合です。 およびjson_array_elements

    SELECT *
    FROM foo LEFT JOIN LATERAL
        json_array_elements (foo.bars :: json) foo_bars ON true
    LEFT OUTER JOIN bar ON (foo_bars ->> 'id') :: BIGINT = bar.ID;
    

    http://sqlfiddle.com/#!15/06dfe/6




    1. インデックスがいくつかあるのに、大きなテーブルでのMySQL InnoDBの挿入/更新が非常に遅くなるのはなぜですか?

    2. 動的SQLクエリでテーブル名を設定するにはどうすればよいですか?

    3. モデルのcakephpテーブルがデータソースのデフォルトで見つかりませんでした

    4. C#でPL-SQLブロックによって返されるdbms.output値を取得する方法