С изключение на синтаксиса, за малкия фрагмент те работят точно по същия начин. Но ако изобщо е възможно, винаги пишете нови заявки с помощта на ANSI-JOIN.
Що се отнася до семантичността, нотацията със запетая се използва за създаване на КАРТЕЗОВ продукт между две таблици, което означава създаване на матрица на всички записи от таблица A с всички записи от таблица B, така че две таблици с 4 и 6 записа съответно произвеждат 24 записа. Използвайки клаузата WHERE, можете да изберете редовете, които всъщност искате от този декартов продукт. Въпреки това, MySQL всъщност не следва и не прави тази огромна матрица, но семантично това означава това.
Синтаксисът JOIN е ANSI стандартът, който по-ясно дефинира как взаимодействат таблиците. Като поставите ON
клауза до JOIN
, става ясно какво свързва двете таблици заедно.
Функционално те ще изпълняват същото за вашите две заявки. Разликата идва, когато започнете да използвате други [OUTER]
Типове JOIN.
Специално за MySQL, нотацията със запетая има една разлика
STRAIGHT_JOIN е подобен на JOIN, с изключение на това, че лявата таблица винаги се чете преди дясната таблица. Това може да се използва за онези (няколко) случая, за които оптимизаторът за свързване поставя таблиците в грешен ред.
Това обаче не би било разумно да разчитам на тази разлика.