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

LEFTJOINを使用する場合とINNERJOINを使用する場合

    キャッチはありますか?はい、あります。左結合は外部結合の形式ですが、内部結合は内部結合の形式です。

    違いを示す例を次に示します。基本データから始めましょう:

    mysql> select * from j1;
    +----+------------+
    | id | thing      |
    +----+------------+
    |  1 | hi         |
    |  2 | hello      |
    |  3 | guten tag  |
    |  4 | ciao       |
    |  5 | buongiorno |
    +----+------------+
    
    mysql> select * from j2;
    +----+-----------+
    | id | thing     |
    +----+-----------+
    |  1 | bye       |
    |  3 | tschau    |
    |  4 | au revoir |
    |  6 | so long   |
    |  7 | tschuessi |
    +----+-----------+
    

    ここで、内部結合と左結合の違いを確認します。

    mysql> select * from j1 inner join j2 on j1.id = j2.id;
    +----+-----------+----+-----------+
    | id | thing     | id | thing     |
    +----+-----------+----+-----------+
    |  1 | hi        |  1 | bye       |
    |  3 | guten tag |  3 | tschau    |
    |  4 | ciao      |  4 | au revoir |
    +----+-----------+----+-----------+
    

    うーん、3列。

    mysql> select * from j1 left join j2 on j1.id = j2.id;
    +----+------------+------+-----------+
    | id | thing      | id   | thing     |
    +----+------------+------+-----------+
    |  1 | hi         |    1 | bye       |
    |  2 | hello      | NULL | NULL      |
    |  3 | guten tag  |    3 | tschau    |
    |  4 | ciao       |    4 | au revoir |
    |  5 | buongiorno | NULL | NULL      |
    +----+------------+------+-----------+
    

    うわー、5列!どうしたの?

    left joinなどの外部結合 一致しない行を保持する-したがって、ID2および5の行は左結合クエリによって保持されます。残りの列はNULLで埋められます。

    つまり、左結合と内部結合は互換性がありません。



    1. Postgres-致命的:データベースファイルはサーバーと互換性がありません

    2. 送信ボタンでデータベースデータを更新

    3. PostgreSQL 13libpqsslpassword接続パラメータの概要

    4. リンクされたテーブルのリストをAccess2016からExcelにエクスポートする方法