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

ANSI結合と非ANSI結合の違いは何ですか?また、どちらをお勧めしますか?

    通常、どちらの構文も問題なく機能しますが、where条件を追加しようとすると、2番目の構文では、どちらが結合条件でどちらがwhere句であるかを理解するのがはるかに簡単であることがわかります。

    1)

      SELECT a.name,
             a.empno,
             b.loc 
        FROM tab a,
             tab b 
       WHERE a.deptno = b.deptno(+)
         AND a.empno = 190;
    

    2)

             SELECT a.name,
                    a.empno,
                    b.loc 
               FROM tab a,
    LEFT OUTER JOIN tab b 
                 ON a.deptno = b.deptno
              WHERE a.empno = 190;
    

    また、外部結合を認識するのははるかに簡単であり、(+)を含めることを忘れないでください。全体として、それは単なる好みの問題であると言えますが、真実は、2番目の構文がはるかに読みやすく、エラーが発生しにくいということです。



    1. 単一のクエリを使用して、複数のテーブルからプルします

    2. varchar vstext-MySQL

    3. カーソルをループすると、カーソルが定義されていないというエラーがスローされます

    4. SQL Serverでグループ化された値から動的列を返す方法(ストアドプロシージャ)