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

エラー(単一行のサブクエリは複数の行を返します)

    これはあなたの質問です:

    select en.*,
           (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
    from data1 en;
    

    selectのサブクエリ このように使用されるのは、スカラーサブクエリと呼ばれます。 。このようなサブクエリは、スカラー値(つまり、数値や文字列などの単一の値)を使用できる場合に使用できます。

    スカラーサブクエリは、次の2つの条件を満たす必要があります。

    • 最大で1行を返します。
    • 1つの列を返します。

    あなたの場合の解決策は、LEFT JOINを使用する簡単です。 :

    select en.*, sf.red, sf.blue, sf.green, sf.yellow 
    from data1 en left join
         data2 sf
         on 1=1;
    

    または、Oracle 12Cでは、横方向の結合を使用できます。

    select en.*, sf.red, sf.blue, sf.green, sf.yellow 
    from data1 en left join lateral
         data2 sf
         on 1=1;
    

    この場合、2つは同じように見えますが、相関サブクエリに横方向結合を使用することもできます。




    1. MySQL / Doctrine2クエリをデバッグする方法は?

    2. Concat関数が機能していません-引数の数が無効です

    3. SQL Server 2008 で datetime がたまたま土曜日か日曜日かどうかを確認する方法

    4. @Column(unique =true)が機能していないようです