Символ левого соединения T-SQL - PullRequest
0 голосов
/ 16 февраля 2010

Какой символ (например, * =) используется для левого соединения? У меня есть таблицы A и B, всегда должны возвращать все записи из таблицы A, даже если в таблице B нет записей.

Ответы [ 4 ]

5 голосов
/ 16 февраля 2010

Это новый стандартный синтаксис ANSI, намного понятнее, имхо.

SELECT *
FROM A
LEFT OUTER JOIN B
ON A.ID = B.ID
3 голосов
/ 16 февраля 2010

Вы не должны использовать этот оператор, так как он устарел в Sql Server 2008 и будет удален в будущих версиях.

Вы должны использовать ANSI-совместимый LEFT JOIN илиLEFT OUTER JOIN вместо.

Не рекомендуется по причине.Синтаксис этого оператора сбивает с толку (он конфликтует со стандартной перегрузкой многих языков «умножить и назначить») и является нестандартным.

0 голосов
/ 16 февраля 2010

Кроме того, использование стандартного синтаксиса ANSI LEFT [OUTER] JOIN для объединений значительно упрощает поиск ошибок, поверьте мне.Это также позволяет более четко различать фильтры в предложении WHERE и операндах соединения.Я бы также рекомендовал использовать синтаксис ANSI для внутренних объединений.

0 голосов
/ 16 февраля 2010

Избегайте любого древнего синтаксиса, подобного этому. Перепишите его, включив в него более новый синтаксис «LEFT OUTER JOIN» и / или «RIGHT OUTER JOIN».

SELECT
    a.*, B.*
    FROM TableA                 a
        LEFT OUTER JOIN TableB  b ON a.id=b.id

Разница между * = и левым внешним соединением
по ссылке:

В более ранних версиях Microsoft® SQL ServerT 2000, левый и правый внешний условия соединения были указаны в Предложение WHERE с использованием *= и =* операторы. В некоторых случаях этот синтаксис приводит к неоднозначному запросу, который может интерпретироваться более чем одним способом. Совместимые с SQL-92 внешние соединения указано в предложении FROM и сделать не приводит к этой двусмысленности. Так как синтаксис SQL-92 является более точным, подробная информация об использовании старый синтаксис внешнего объединения Transact-SQL в предложение WHERE не включено в этот выпуск. Синтаксис не может быть поддерживается в будущей версии SQL Сервер. Любые заявления, использующие Внешние объединения Transact-SQL должны быть изменено использование синтаксиса SQL-92

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...