Мне было просто любопытно, почему оператор *=
для left outer join
и правое внешнее объединение '= *' были исключены из стандарта SQL или, по крайней мере, не поддерживаются SQL Server 2005 и?Я прочитал несколько других сообщений об этом конкретном операторе и понимаю, что он может дать некоторые неожиданные результаты.Но если бы это было семантически эквивалентно, я бы подумал, что было бы проще использовать оператор при объединении нескольких таблиц.Во всяком случае, я бы предпочел использовать этот оператор для динамического создания SQL-запросов, а не пытаться получить правильный порядок слов, например:
FROM accounts
LEFT OUTER JOIN customers
ON accounts.accountnum = customers.accountnum
LEFT OUTER JOIN products
ON customers.accountnum = products.accountnum
AND customers.id = products.customerid
, где
FROM accounts, customers, products
WHERE accounts.accountnum *= customers.accountnum AND
customers.accountnum *= products.accountnum AND
customers.id *= products.customer.id
может показатьсяпроще разобрать вместе.
Но вернемся к реальному миру, какова была идея для этих операторов, если они не выполняют "истинное" внешнее соединение? Термин Short Hand подразумевает, что он должен делать то же самое, но, безусловно, не в этом случае.