SQL 服务器在视图查询中将 LEFT JOIN 替换为 LEFT OUTER JOIN
SQL Server replaces LEFT JOIN for LEFT OUTER JOIN in view query
我需要在视图中使用 LEFT JOIN,但是 SQL 每次我保存视图时,服务器都会将 LEFT JOIN 替换为 LEFT OUTER JOIN。
当尝试显式使用 LEFT INNER JOIN 时,出现错误 "Incorrect syntax near word 'INNER'"。更重要的是,当我想为视图创建索引时,出现错误 "Cannot add clustered index to views using OUTER JOINS".
这太令人抓狂了,想知道为什么会这样吗?
因此,当我尝试为视图创建索引时,我收到消息说我使用了外部联接,但我没有这样做。
您对联接感到困惑,请记住有不同的编写联接的方法。您正在寻找的是 LEFT OUTER JOIN(OUTER 是可选的)。没有 LEFT INNER JOIN.
共有三种主要类型的联接。
类型 1:INNER JOIN - 仅当 table 都匹配时
1.) INNER JOIN 又名 JOIN
类型 2:外部联接其中一个或两个 table 匹配
1.) LEFT OUTER JOIN 又名 LEFT JOIN
2.) RIGHT OUTER JOIN 又名 RIGHT JOIN
3.) FULL OUTER JOIN 又名 FULL JOIN
类型 3:交叉连接 - 笛卡尔积(每个 table 的所有可能组合)
1.) 交叉连接
这是一张显示每个工作原理的图表:
我需要在视图中使用 LEFT JOIN,但是 SQL 每次我保存视图时,服务器都会将 LEFT JOIN 替换为 LEFT OUTER JOIN。
当尝试显式使用 LEFT INNER JOIN 时,出现错误 "Incorrect syntax near word 'INNER'"。更重要的是,当我想为视图创建索引时,出现错误 "Cannot add clustered index to views using OUTER JOINS".
这太令人抓狂了,想知道为什么会这样吗?
因此,当我尝试为视图创建索引时,我收到消息说我使用了外部联接,但我没有这样做。
您对联接感到困惑,请记住有不同的编写联接的方法。您正在寻找的是 LEFT OUTER JOIN(OUTER 是可选的)。没有 LEFT INNER JOIN.
共有三种主要类型的联接。
类型 1:INNER JOIN - 仅当 table 都匹配时
1.) INNER JOIN 又名 JOIN
类型 2:外部联接其中一个或两个 table 匹配
1.) LEFT OUTER JOIN 又名 LEFT JOIN
2.) RIGHT OUTER JOIN 又名 RIGHT JOIN
3.) FULL OUTER JOIN 又名 FULL JOIN
类型 3:交叉连接 - 笛卡尔积(每个 table 的所有可能组合)
1.) 交叉连接
这是一张显示每个工作原理的图表: