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

配列との関係をフラット化して、配列エントリごとに1つの行を出力します

    セットを返す関数unnest() SELECTに ラファエルが提案するようにリスト 。これは、Postgres10より前のコーナーケースの問題を示していました。参照:

    Postgres 9.3以降、も使用できます。 LATERAL これに参加してください。これは、セットを返す関数をFROMに配置するためのよりクリーンで標準に準拠した方法です。 SELECTではなくリスト リスト:

    SELECT name, value
    FROM   tbl, unnest(values) value;  -- implicit CROSS JOIN LATERAL
    

    1つの微妙な違い:これは空/NULLvaluesの行を削除します unnest()以降の結果から 行なしを返します 、FROMでは同じものがNULL値に変換されます リストし、とにかく返されます。 100%同等のクエリは次のとおりです。

    SELECT t.name, v.value
    FROM   tbl t
    LEFT   JOIN unnest(t.values) v(value) ON true;
    

    参照:



    1. 複合キーのMySQLSELECTLAST_INSERT_ID()。出来ますか?

    2. PostgreSQLでスキーマを複製する方法

    3. ハイフンを無視するMySQL検索

    4. MySQLとOracleを使用したHibernate自動キー生成