gpt4 book ai didi

SQL Server 连接 : Are 'JOIN' Statements 'LEFT OUTER' Associated by Default in SQL Server?

转载 作者:行者123 更新时间:2023-12-03 03:22:55 27 4
gpt4 key购买 nike

我在SQL有大约6个月的新手经验, TSQL , SSIS , ETL 。当我发现自己使用JOIN时在我的实习项目中越来越多的陈述我一直在尝试不同的JOIN声明。我想证实我的发现。以下关于 JOIN 的结论的陈述是否准确SQL Server 中的语句?:

1)我做了一个LEFT OUTER JOIN查询并使用 JOIN 执行相同的查询产生了相同的结果;都是JOIN声明LEFT OUTER在 SQL Server 中关联?

2)我做了一个LEFT OUTER JOIN WHERE第二 table PK(加入)IS NOT NULL并使用 INNER JOIN 执行相同的查询产生了相同的结果;可以肯定地说INNER JOIN语句只会产生匹配的记录?与 LEFT OUTER JOIN 相同哪里加入记录IS NOT NULL

我问的原因是因为我一直只使用LEFT OUTER JOINS因为那是我感到舒服的。但是,我希望在编写查询时消除尽可能多的代码,以提高效率。我只是想确保我的观察是正确的。

此外,您是否可以提供任何提示来轻松找出哪个 JOIN语句是否适合特定查询?例如,什么JOIN如果您想生成不匹配的记录,您会使用吗?

谢谢。

最佳答案

一个joininner join例如,表 A 和表 B 之间的(相同的事情)field1 会缩小到表 A 和表 B 共享相同 field1 值的所有行。

一个left outer join在 A 和 B 之间,在 field1 上,将显示表 A 的所有行,并且仅显示表 B 中具有表 A 中存在的 field1 的行。

如果表 A 上的 field1 行具有表 B 中不存在的 field1 值,则表 B 的 field1 值将显示为 null,但表 A 的行将被保留,因为它是外连接。这些行不会出现在 join 中这是一个隐含的inner join .

如果执行 join 得到相同的结果在表 A 和表 B 之间执行 left outer join在表 A 和 B 之间,那么您要加入的任何字段都具有两个表中都存在的值。 A 或 B 中的任何连接字段都没有值只存在于 A 或 B 中,它们都存在于 A 和 B 中。

您也可能将条件放入 where 中属于 on 的子句外连接的子句,这可能会引起您的困惑。在我上面的表 A 和 B 的示例中,其中 A 与 B 进行左外连接,您可以将与表 B 相关的任何条件放在 on 中。子句,而不是 where 子句,否则您实际上会将外连接变成内连接。例如,如果 WHERE 子句中有 b.field4 = 12,并且表 B 与 A 没有匹配项,则它将为空,并且该条件将失败,并且即使您使用了 a,它也不会再返回左外连接。这可能就是您所指的。

关于SQL Server 连接 : Are 'JOIN' Statements 'LEFT OUTER' Associated by Default in SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23705546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com