Немедленно удалите этот код и замените его левым соединением. Этот код не всегда интерпретируется правильно (иногда SQL Server решает, что это перекрестное соединение) даже в SQL Server 2000 и, следовательно, может давать неправильные результаты! Кроме того, в будущем он устарел.
Я собираюсь добавить, что при настройке на левые соединения вы должны также удалить все эти другие неявные соединения. Синтаксис неявного соединения был устаревшим с 1992 года, нет оправдания тому, что он все еще находится в рабочем коде. А смешивание неявных и явных объединений может дать неожиданные результаты.
Не-ANSI синтаксис для внешних объединений ( * =
и = *
) находится в официальном списке устаревших функции, которые будут удалены в следующей версии SQL .
Следующая база данных SQL Server Функции двигателя не поддерживаются в следующей версии SQL Server. Делать не использовать эти функции в новых разработка и изменение приложения, которые в настоящее время используют эти как можно скорее.
Функция замены - это ANSI-совместимый синтаксис JOIN .
Это сокращенный синтаксис соединения. Взгляните на эту ветку, которая посвящена этой теме.
Это левое внешнее соединение, = * - правое внешнее соединение.
Например, следующие равны:
SELECT * FROM Table1 LEFT OUTER JOIN Table2 ON Table1.ID = Table2.FK_ID
SELECT * FROM Table1, Table2 WHERE Table1.ID *= Table2.FK_ID
Я считаю, что это «операторы внешнего соединения, отличные от ANSI». Уровень совместимости вашей базы данных должен быть 80 или ниже.
Это старый оператор левого внешнего соединения синтаксиса ANSI (ANSI-89). Я бы рекомендовал не использовать его - синтаксис ANSI более подробный и более читаемый.