sql >> Databáze >  >> RDS >> Mysql

Jaké je výchozí chování MySQL JOIN, INNER nebo OUTER?

V MySQL psaní JOIN unqualified znamená INNER JOIN . Jinými slovy INNER v INNER JOIN je volitelný. INNER a CROSS jsou synonyma v MySQL. Pro přehlednost píšu JOIN nebo INNER JOIN pokud mám podmínku spojení a CROSS JOIN pokud nemám podmínku.

Povolená syntaxe pro spojení je popsána v dokumentaci .

Efekt je stejný, ale historie za nimi je odlišná. Syntaxe čárky je ze standardu ANSI-89. S touto syntaxí však existuje řada problémů, takže ve standardu ANSI-92 bylo zavedeno klíčové slovo JOIN.

Důrazně doporučuji, abyste vždy místo čárky použijte syntaxi JOIN.

  • T1 JOIN T2 ON ... je čitelnější než T1, T2 WHERE ... .
  • Je lépe udržovatelný, protože vztahy mezi tabulkami a filtry jsou jasně definovány, nikoli smíchány dohromady.
  • Syntaxi JOIN lze snáze převést na OUTER JOIN než syntaxi čárkou.
  • Míchání syntaxe čárky a JOIN ve stejném příkazu může způsobit podivné chyby kvůli pravidlům přednosti.
  • Je méně pravděpodobné, že při použití syntaxe JOIN dojde k náhodnému vytvoření kartézského produktu kvůli zapomenuté spojovací klauzuli, protože spojovací klauzule jsou zapsány vedle spojení a je snadné zjistit, zda některá chybí.


  1. Jak používat nativní heslo s MySQL 5.7

  2. zálohování a obnovení mysqldump na vzdálený server

  3. Yii2 - levé spojení za vícenásobné podmínky

  4. SQL INSERT bez určení sloupců. Co se stalo?