sql >> Database >  >> RDS >> Oracle

Wat is het verschil tussen ANSI- en niet-ANSI-joins en welke raden jullie aan?

beide syntaxis werken meestal zonder problemen, maar als je een where-voorwaarde probeert toe te voegen, zul je zien dat met de tweede veel eenvoudiger te begrijpen is wat de join-voorwaarde is en welke de waar-clausule.

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;

Het is ook veel gemakkelijker om een ​​outer join te herkennen en vergeet niet de (+) toe te voegen. Over het algemeen kun je zeggen dat het gewoon een kwestie van smaak is, maar de waarheid is dat de tweede syntaxis veel leesbaarder is en minder vatbaar voor fouten.



  1. Een voorwaardelijke SQL-update-instructie voor twee tabellen tegelijk

  2. hoe mysql-queryresultaten in een bepaalde volgorde weergeven?

  3. Bepaalde records naar het einde van een run van dezelfde datum schuiven

  4. 2 functies die de dag, de maand en het jaar uit een datum halen in Oracle