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

SQLテーブル結合のON句とWHERE句の違い

    主な違いは、異なる結合を使用している場合です。

    通常、内部結合を使用した場合も同じ結果が表示されますが、LEFT結合の使用を開始すると、結果が変わります。

    次の例を見てください

    SQLフィドルデモ

    そして、次の記事を見てください(非常に説明的です)

    @ShannonSeveranceの編集

    スキームとテストデータ

    CREATE TABLE Table1 (
      ID INT,
      Val VARCHAR(20)
     );
    
    INSERT INTO Table1 VALUES (1,'a');
    INSERT INTO Table1 VALUES (2,'a');
    
    CREATE TABLE Table2 (
      ID INT,
      Val VARCHAR(20)
     );
    
    INSERT INTO Table2 VALUES (1,'a');
    

    およびテスト

    SELECT t1.ID,
    t1.Val,
    t2.ID ID2,
    t2.Val Val2
    FROM Table1 t1 INNER JOIN
    Table2 t2 ON t1.ID = t2.ID AND t1.Val = t2.Val;
    
    SELECT  t1.ID,
    t1.Val,
    t2.ID ID2,
    t2.Val Val2
    FROM Table1 t1,Table2 t2 
    WHERE t1.ID = t2.ID
     AND t1.Val = t2.Val;
    
    SELECT  t1.ID,
    t1.Val,
    t2.ID ID2,
    t2.Val Val2
    FROM Table1 t1 LEFT JOIN
    Table2 t2 ON t1.ID = t2.ID  AND t1.Val = t2.Val;
    
    SELECT  t1.ID,
    t1.Val,
    t2.ID ID2,
    t2.Val Val2
    FROM Table1 t1 LEFT JOIN
    Table2 t2 ON t1.ID = t2.ID  
    WHERE t1.Val = t2.Val;
    


    1. MySQLサーバーのInnoDBバッファープールサイズの計算

    2. MySQLの列で数値以外の値を見つける方法

    3. SQLServerランダムソート

    4. 新しいテーブルが作成されているときにのみ実行するトリガーを作成する