sql >> Database teknologi >  >> RDS >> Oracle

Hvad er forskellen mellem ANSI og ikke-ANSI joins, og hvilken anbefaler du?

begge syntakser fungerer normalt uden problemer, men hvis du prøver at tilføje en where-betingelse, vil du se, at med den anden er det meget nemmere at forstå, hvilken der er join-betingelsen, og hvilken der er where-sætningen.

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;

Det er også meget nemmere at genkende en ydre joinforbindelse og glem ikke at inkludere (+). Generelt kan man sige, at det kun er et spørgsmål om smag, men sandheden er, at den anden syntaks er meget mere læsbar og mindre udsat for fejl.



  1. Beregning af afstand mellem en gps placering og postgis geografi værdi ved hjælp af en funktion?

  2. Gruppér rækker, hvis de har overlappende tidsintervaller

  3. Hvordan beregner man forholdet ved hjælp af sql-forespørgsel?

  4. Hvordan skal jeg indeksere en forespørgsel med to intervalbetingelser?