Это означает, что вы присоединяетесь TABLE1
и TABLE2
, используя LEFT JOIN
То есть, если в TABLE2.Column1
есть значение соответствия для TABLE1.Column1
, это значение будет отображаться, и если совпадения нет, столбец будет, но значение будет NULL
Для всех других таблиц вы используете CROSS JOIN
. Таким образом, он создаст Cartesian Product
с записями, полученными при первом присоединении
DECLARE @TABLEA TABLE
(
ColA INT
)
DECLARE @TABLEB TABLE
(
ColB INT
)
DECLARE @TABLEC TABLE
(
ColC INT
)
DECLARE @TABLED TABLE
(
ColD INT
)
INSERT INTO @TABLEA
VALUES(1),(2),(3)
INSERT INTO @TABLEB
VALUES(4),(5),(6)
INSERT INTO @TABLEC
VALUES(7),(8),(9)
INSERT INTO @TABLED
VALUES(10)
SELECT
*
FROM @TABLEA A
LEFT JOIN @TABLEB B
ON A.ColA = B.ColB
,@TABLEC,@TABLED
В вышеприведенном примере TableA и TableB соединены влево, а затем TABLEC и TABLED перекрестно соединены с результатом. Так что мой окончательный результат будет
ColA ColB ColC ColD
----------- ----------- ----------- -----------
1 NULL 7 10
1 NULL 8 10
1 NULL 9 10
2 NULL 7 10
2 NULL 8 10
2 NULL 9 10
3 NULL 7 10
3 NULL 8 10
3 NULL 9 10
Вы можете отфильтровать записи из любой таблицы, используя WHERE
Clause