sql >> Database teknologi >  >> RDS >> Sqlserver

Hvilken joinsyntaks er bedre?

Nå, "bedre" er subjektivt. Der er en vis stil her. Men jeg vil besvare dine spørgsmål direkte.

  1. Begge udfører det samme
  2. Begge er ANSI-kompatible.
  3. Problemet med det første eksempel er, at

    • det er meget let utilsigtet at udlede krydsproduktet (da det er lettere at udelade joinkriterier)

    • det bliver også svært at fejlsøge joinkriterierne, efterhånden som du tilføjer flere og flere tabeller til joinforbindelsen

    • da den gammeldags ydre joinforbindelse (*=)-syntaksen er blevet forældet (det har længe været dokumenteret at returnere forkerte resultater), når du skal introducere outer joins, skal du blande ny stil og old style joins ... hvorfor fremme inkonsekvens?

    • selvom det ikke ligefrem er autoriteten for bedste praksis, anbefaler Microsoft eksplicit INNER/YVRE JOIN-syntaks

    • med sidstnævnte metode:

      • du bruger konsekvent joinsyntaks uanset indre/ydre
      • det er sværere (ikke umuligt) ved et uheld at udlede krydsproduktet
      • isolering af joinkriterierne fra filterkriterierne kan gøre fejlfinding lettere

Jeg skrev indlægget Kevin pegede på.




  1. Sådan konverteres antal minutter til tt:mm-format i TSQL?

  2. ASP.NET bruge SqlConnection connect MySQL

  3. Hvordan kan jeg indstille et maksimalt antal rækker i MySQL-tabellen?

  4. Forskellige tidszone_typer på DateTime-objekt