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

単一の選択リストでSQLの複数のUNNEST

    これは、それ自体がおかしなことではありませんが、PostgreSQLがSELECTで複数のセットを返す関数を非常に奇妙に処理していることについてです。 リスト。セット-SELECTの関数を返す ANSISQL規格の一部ではありません。

    LATERALを使用すると、動作が非常に簡単になります。 クエリ。FROMでセットを返す関数を使用するよりも優先されます。 可能な限り:

    select a, b FROM unnest(array[1,2]) a, LATERAL unnest(array[1,2,3]) b;
    

    例:

    regress=> select a, b FROM unnest(array[1,2]) a, LATERAL unnest(array[1,2,3]) b;
     a | b 
    ---+---
     1 | 1
     1 | 2
     1 | 3
     2 | 1
     2 | 2
     2 | 3
    (6 rows)
    

    SELECTでまだ複数のセットを返す関数を使用しているのはこのときだけです 両方が同じ行数を返す関数の値をペアにしたいときです。その必要性は9.4でなくなり、複数の引数を持つunnest WITH ORDINALITYをサポートしています 。




    1. 滑らかなダイナミックグループ

    2. JUser ::_ load:ユーザーは3つのメインjoomlaテーブルすべてに存在しますが、ユーザーをロードできません

    3. 何かを除くすべてを選択するためのmysqlクエリ

    4. MySQL-CONCAT-文字列を連結して変数として使用する方法はありますか?