sql >> Base de Datos >  >> RDS >> Oracle

¿Cuál es la diferencia entre las uniones ANSI y no ANSI, y cuál recomienda?

ambas sintaxis suelen funcionar sin problemas, pero si intentas añadir una condición where verás que con la segunda es mucho más sencillo entender cuál es la condición join y cuál la cláusula 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;

Además, es mucho más fácil reconocer una combinación externa y no olvide incluir el (+). En general, se puede decir que es solo una cuestión de gusto, pero la verdad es que la segunda sintaxis es mucho más legible y menos propensa a errores.