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

SQLite左結合

    概要 :このチュートリアルでは、SQLite LEFT JOINの使用方法を学習します 複数のテーブルからデータをクエリする句。

    SQLite LEFT JOINの紹介 条項

    INNER JOINに似ています 句、LEFT JOIN 句は、SELECTのオプションの句です。 声明。 LEFT JOINを使用します 複数の関連するテーブルからデータをクエリする句。

    AとBの2つのテーブルがあるとします。

    • Aにはm列とf列があります。
    • Bにはn列とf列があります。

    LEFT JOINを使用してAとBの間の結合を実行するには 句では、次のステートメントを使用します:

    SELECT
    	a,
    	b
    FROM
    	A
    LEFT JOIN B ON A.f = B.f
    WHERE search_condition;Code language: SQL (Structured Query Language) (sql)

    A.f = B.f は条件式です。等号(=)演算子の他に、より大きい(>)、より小さい(<)などの他の比較演算子を使用できます。

    ステートメントは、以下を含む結果セットを返します。

    1. テーブルBに対応する行があるテーブルA(左側のテーブル)の行。
    2. テーブルAの行とテーブルBの行はNULLで埋められています テーブルAの行に対応する行がテーブルBにない場合の値。

    つまり、テーブルBに一致する行があるかどうかに関係なく、テーブルAのすべての行が結果セットに含まれます。

    WHEREがある場合 ステートメントの句、search_condition WHERELEFT JOINの一致後に句が適用されます 条項が完了します。

    次のLEFT JOINの図を参照してください。 AテーブルとBテーブルの間の句。

    テーブルAのすべての行が結果セットに含まれます。

    2行目が(a2,2)であるため テーブルBに対応する行LEFT JOINがありません 句は偽の行を作成します NULLで埋められます 。

    次のベン図は、LEFT JOINを示しています。 条項。

    LEFT OUTER JOIN LEFT JOINと同じです 。

    SQLite LEFT JOIN

    artistsを使用します およびalbums デモンストレーション用のサンプルデータベースのテーブル。

    1枚のアルバムは1人のアーティストのものです。ただし、1人のアーティストが0枚以上のアルバムを持っている場合があります。

    LEFT JOINを使用して、アルバムを持っていないアーティストを検索するには 条項では、アーティストとそれに対応するアルバムを選択します。アーティストがアルバムを持っていない場合、AlbumIdの値 列はNULL.

    最初にアルバムを持っていないアーティストを表示するには、2つの選択肢があります。

    • まず、ORDER BYを使用します AlbumIdの行を一覧表示する句 NULLです 最初に値を指定します。
    • 次に、WHEREを使用します 句とIS NULL アルバムを持っていないアーティストのみを一覧表示する演算子。

    次のステートメントは、LEFT JOINを使用しています ORDER BYを含む句 条項。

    SELECT
       artists.ArtistId, 
       AlbumId
    FROM
       artists
    LEFT JOIN albums ON
       albums.ArtistId = artists.ArtistId
    ORDER BY
       AlbumId;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    次のステートメントは、LEFT JOINを使用しています WHEREを含む句 条項。

    SELECT
       artists.ArtistId
       , AlbumId
    FROM
       artists
    LEFT JOIN albums ON
       albums.ArtistId = artists.ArtistId
    WHERE
       AlbumId IS NULL;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    このチュートリアルでは、SQLite LEFT JOINの使用方法を学びました。 複数のテーブルからデータをクエリする句。


    1. SQLで列にランダムな数値を入力するにはどうすればよいですか?すべての行で同じ値を取得します

    2. NOTIN句内のNULL値

    3. 関係のために許可が拒否されました

    4. プランエクスプローラーでプランの詳細をネイティブに匿名化します