我有一个我听不懂的查询。有人可以向我解释所有这些逗号的情况吗?
SELECT * FROM TABLE1
LEFT OUTER JOIN TABLE2 ON TABLE1.Column1 = TABLE2.Column1,
TABLE3, TABLE4, TABLE5, TABLE6
WHERE [...]
我没有列出一堆或几张桌子的那一部分。通过WHERE部分,我知道它是绑定的,或者至少像“ FROM”用法中那样使用。有人可以给我解释一下它的名称和名称,或者至少有一个指向这种链接形式的文档的链接吗?
非常感谢。
答案 0 :(得分:1)
这意味着您正在使用TABLE1
来加入TABLE2
和LEFT JOIN
因此,如果TABLE2.Column1
中有一个TABLE1.Column1
的匹配值,则将显示Value,如果没有Match,则该列将存在,但Value将为NULL
< / p>
对于所有其他表,您正在使用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
条款