sql >> Databáze >  >> RDS >> Sqlserver

Která syntaxe spojení je lepší?

No, "lepší" je subjektivní. Je zde určitý styl. Ale na vaše otázky se odpovím přímo.

  1. Oba fungují stejně
  2. Oba jsou v souladu s ANSI.
  3. Problém s prvním příkladem je, že

    • je velmi snadné neúmyslně odvodit křížový produkt (protože je snazší vynechat kritéria spojení)

    • je také obtížné ladit kritéria spojení, protože do spojení přidáváte další a další tabulky

    • protože syntaxe vnějšího spojení ve starém stylu (*=) byla zastaralá (už dlouho bylo zdokumentováno, že vrací nesprávné výsledky), když potřebujete zavést vnější spojení, musíte smíchat nový styl a spojení starého stylu ... proč propagovat nekonzistence?

    • ačkoli to není zrovna autorita ohledně osvědčených postupů, Microsoft doporučuje explicitní syntaxi INNER/OUTER JOIN

    • pomocí druhé metody:

      • používáte konzistentní syntaxi spojení bez ohledu na vnitřní / vnější
      • je těžší (ne nemožné) náhodně odvodit křížový produkt
      • oddělení kritérií spojení od kritérií filtru může usnadnit ladění

Napsal jsem příspěvek, na který Kevin poukázal.




  1. Jak PI() funguje v MariaDB

  2. Jak exportovat a importovat soubor .sql z příkazového řádku s možnostmi?

  3. Seznam cizích klíčů a tabulek, na které odkazují v Oracle DB

  4. PostgreSQL:export výsledných dat z SQL dotazu do Excelu/CSV