sql >> Databasteknik >  >> RDS >> Sqlserver

Vilken joinsyntax är bättre?

Tja, "bättre" är subjektivt. Det finns lite stil här. Men jag tar upp dina frågor direkt.

  1. Båda utför samma
  2. Båda är ANSI-kompatibla.
  3. Problemet med det första exemplet är att

    • det är mycket lätt att oavsiktligt härleda korsprodukten (eftersom det är lättare att utelämna anslutningskriterier)

    • det blir också svårt att felsöka kopplingskriterierna när du lägger till fler och fler tabeller i kopplingen

    • eftersom syntaxen för outer join (*=) i gammal stil har föråldrats (det har länge dokumenterats att returnera felaktiga resultat), när du behöver introducera outer joins måste du blanda ny stil och old style joins ... varför marknadsföra inkonsekvens?

    • även om det inte exakt är auktoriteten för bästa praxis, rekommenderar Microsoft explicit INNER/YTTRE JOIN-syntax

    • med den senare metoden:

      • du använder konsekvent joinsyntax oavsett inre/yttre
      • det är svårare (inte omöjligt) att av misstag härleda korsprodukten
      • att isolera kopplingskriterierna från filterkriterierna kan göra felsökningen enklare

Jag skrev inlägget Kevin pekade på.




  1. Data fylls i från en viss tabells datum istället för alla tabeller i sqlite

  2. SQLite-databasläcka hittades

  3. Django Migrations:A Primer

  4. Hur man formaterar siffror i PostgreSQL