Это:
WHERE t.column =* s.column
... старый TSQL (до SQL Server 2005) синтаксис внешнего соединения и не является ANSI JOIN.
Я считаю, что это старый синтаксис, указывающий на условие внешнего соединения от таблицы1 к таблице2
Старый стиль:
SELECT * FROM table1, table2
WHERE table1.yr =* table2.yr -1
Новый стиль (SQL92):
SELECT * FROM table2
LEFT OUTER JOIN table1 ON table1.yr = table2.yr - 1
Это синтаксис старого стиля для выражения объединений
Это означает, что код необходимо немедленно заменить! Это соединение стилей должно быть правильным соединением. К сожалению, это иногда интерпретируется как перекрестное соединение, поэтому результаты использования этого соединения могут быть неверными. Кроме того, этот синтаксис устарел и не может использоваться в следующей версии сервера SQl.
Это синтаксис ANSI SQL 1989 для RIGHT OUTER JOIN, где * = будет LEFT OUTER JOIN.
Также следует отметить, что использование синтаксиса соединения в предложении WHERE не рекомендуется в SQL 2008. http://scarydba.wordpress.com/2009/09/15/no-join-predicate/ <== Своевременная статья по этому поводу.
Это старый стиль объединений, который объявлен устаревшим в ANSI SQL92. Новый синтаксис использует INNER и OUTER JOIN, которые объединяют таблицы на основе выражений, а не равенства
А ??? внешнее соединение указывается с помощью символа = * вместо = в предложении WHERE.
да, это еще один синтаксис для левого внешнего соединения
from table1 left outer join table2 on table1.yr = table2.yr - 1
SELECT *
FROM table1, table2
WHERE table1.yr =* table2.yr -1
Означает то же самое, что и следующее:
SELECT *
FROM
table2
LEFT OUTER JOIN
table1
ON table1.yr = (table2.yr - 1)
Синтаксис * считается устаревшим и не соответствует стандартам ANSI.
Oracle имеет аналогичную конструкцию ] вот так:
WHERE table1.yr (+)= table2.yr
Здесь много глупых ответов. Вы не указали предложение FROM, поэтому невозможно определить, представляет ли ваш * = внешнее соединение LEFT или RIGHT.
WHERE table1.yr =* table2.yr -1
- это наверняка старый синтаксис для внешнего соединения. Но любой, кто утверждает, что знает, является ли это внешнее соединение LEFT или RIGHT, ошибается. Это зависит от порядка, в котором table1 и table2 названы в предложении FROM, и это не указано.
Чтобы быть простым и понятным. Это оператор внешнего соединения SQL-92 ( подробнее )
Не используйте его, это очень старая школа, но он похож на LEFT JOIN и RIGHT JOIN. Все, что он делает, это указывает, какая сторона соединения является "родительской", поэтому строки с этой стороны будут рассматриваться в первую очередь.
Если вы попытаетесь запустить эту функцию на SQL 2005, она выдаст ошибку, говоря, что вам нужно запустить ее в режиме совместимости.