Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво е поведението на MySQL JOIN по подразбиране, INNER или OUTER?

В MySQL пише JOIN неквалифицирано означава INNER JOIN . С други думи INNER в INNER JOIN е по избор. INNER и CROSS са синоними в MySQL. За по-голяма яснота пиша JOIN или INNER JOIN ако имам условие за присъединяване и CROSS JOIN ако нямам състояние.

Разрешеният синтаксис за присъединяване е описан в документацията .

Ефектът е същият, но историята зад тях е различна. Синтаксисът на запетаята е от стандарта ANSI-89. Въпреки това има редица проблеми с този синтаксис, така че в стандарта ANSI-92 беше въведена ключовата дума JOIN.

Горещо ви препоръчвам давинагите използвайте синтаксис JOIN, а не запетая.

  • T1 JOIN T2 ON ... е по-четим от T1, T2 WHERE ... .
  • Той е по-поддържаем, защото връзките на таблицата и филтрите са ясно дефинирани, а не смесени заедно.
  • Синтаксисът JOIN е по-лесен за преобразуване във OUTER JOIN, отколкото синтаксисът на запетаята.
  • Смесването на синтаксиса на запетая и JOIN в едно и също изявление може да доведе до любопитни грешки поради правилата за приоритет.
  • По-малко вероятно е случайно да се създаде декартов продукт при използване на синтаксиса JOIN поради забравена клауза за присъединяване, тъй като клаузите за присъединяване са написани до присъединяванията и е лесно да се види дали липсва такава.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализация на MySQL CASE WHEN/THEN/ELSE

  2. Как да конвертирам човешка дата в unix времева марка в Mysql?

  3. Грешка във външния ключ на MySQL 1005 errno 150 първичен ключ като външен ключ

  4. MySQL заявките са бързи, когато се изпълняват директно, но наистина бавни, когато се изпълняват като съхранена процедура

  5. PHP MySQL SQL анализатор (INSERT и UPDATE)