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

selectステートメントのサブクエリはOracleでどのように機能しますか

    簡単です-

    SELECT empname,
           empid,
           (SELECT COUNT (profileid)
              FROM profile
             WHERE profile.empid = employee.empid)
               AS number_of_profiles
      FROM employee;
    

    次のようなテーブル結合を使用すると、さらに簡単になります。

      SELECT e.empname, e.empid, COUNT (p.profileid) AS number_of_profiles
        FROM employee e LEFT JOIN profile p ON e.empid = p.empid
    GROUP BY e.empname, e.empid;
    

    サブクエリの説明:

    基本的に、selectのサブクエリ スカラー値を取得し、それをメインクエリに渡します。 selectのサブクエリ 複数の行と複数の列を渡すことは許可されていません。これは制限事項です。ここでは、countを渡します メインのクエリに対して、これは、私たちが知っているように、常に数値、つまりスカラー値にすぎません。値が見つからない場合、サブクエリはnullを返します メインクエリに。さらに、サブクエリはfromの列にアクセスできます employee.empidのクエリに示されているように、メインクエリの句 外側のクエリから内側のクエリに渡されます。

    編集

    selectでサブクエリを使用する場合 節では、Oracleは基本的にそれを左結合として扱い(これはクエリのExplain Planで確認できます)、行のカーディナリティは左側のすべての行に対して右側に1つだけです。

    左結合の説明

    左結合は、特にselectを置き換える場合に非常に便利です。 その制限のためにサブクエリ。 LEFT JOINの両側のテーブルの行数に制限はありません。 キーワード。

    詳細については、サブクエリと左結合または左外部結合に関するOracleDocsを参照してください。



    1. ClusterControlを使用したVitessとMySQLの実行

    2. ClusterControl 1.7.3の発表:PostgreSQLと新しいクラウド展開オプションのサポートの改善

    3. Microsoft Accessテーブルのヒント–秘訣とガイドラインパート4

    4. MySQL管理者向けのMariaDB列ストアのガイド