Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Was ist der Unterschied zwischen ANSI- und Nicht-ANSI-Joins, und welche empfehlen Sie?

Beide Syntaxen funktionieren normalerweise ohne Probleme, aber wenn Sie versuchen, eine Where-Bedingung hinzuzufügen, werden Sie sehen, dass es mit der zweiten viel einfacher ist zu verstehen, welche die Join-Bedingung und welche die Where-Klausel ist.

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;

Außerdem ist es viel einfacher, einen äußeren Join zu erkennen, und vergessen Sie nicht, das (+) einzuschließen. Insgesamt kann man sagen, dass es nur eine Frage des Geschmacks ist, aber die Wahrheit ist, dass die zweite Syntax viel besser lesbar und weniger fehleranfällig ist.