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

Може ли някой да помогне да обясни защо неизползването на SQL JOIN е лоша практика и погрешно?

Вярно е, че и двете форми на синтаксис трябва да дават един и същ резултат и вътрешно MySQL ги изпълнява и двете по абсолютно същия начин. Текущите версии на стандарта SQL поддържат и двете форми, въпреки че стилът на запетаята се поддържа само с цел обратна съвместимост.

Има случай, когато използването на синтаксис в стил запетая е неуспешен, но това е екзотично:

SELECT * FROM A, B JOIN C ON C.x = A.y;

JOIN операторът има по-висок приоритет от запетаята. Тъй като горната заявка се опитва да оцени C.x = A.y той дори не знае това A е част от заявката. Така че получавате грешка:

ERROR 1054 (42S22): Unknown column 'A.y' in 'on clause'

Най-доброто средство е да използвате JOIN синтаксис последователно, вместо да ги смесвате.

Също така не можете да правите външни свързвания със синтаксиса на присъединяване със запетая. Oracle и Sybase/Microsoft изобретиха всеки собствен собствен синтаксис за обработка на външни присъединявания, но нито един от тях не се поддържа от други марки RDBMS. Днес всички текущи версии на RDBMS, включително Oracle и Sybase/Microsoft, поддържат стандартния 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?

  2. Заявката, използваща group_concat, връща само един ред

  3. Как мога да направя три присъединявания към таблицата в заявка UPDATE?

  4. Използване на SSHTunnelForwarder за свързване към MySQL db чрез SSH

  5. Съхранената процедура причинява несинхронизиране на командите при следващата заявка