gpt4 book ai didi

sql - 隐式 SQL 连接不能做的查询?

转载 作者:行者123 更新时间:2023-12-04 16:56:45 26 4
gpt4 key购买 nike

我从来没有学习过连接是如何工作的,但仅使用 select 和 where 子句就足以满足我所做的所有查询。是否存在使用 WHERE 子句无法获得正确结果而必须使用 JOIN 的情况?如果是这样,有人可以提供示例吗?谢谢。

最佳答案

隐式连接已过时 20 多年。你为什么要考虑和他们一起写代码?

是的,它们会产生显式连接没有的问题。说到 SQL Server,左连接和右连接隐式语法不能保证返回正确的结果。有时,它们返回交叉联接而不是外部联接。这是一件坏事。至少在 SQL Server 2000 中也是如此,并且它们正在逐步淘汰,因此使用它们是一种全面的不良做法。

隐式连接的另一个问题是很容易因为忘记其中一个 where 条件而意外执行交叉连接,尤其是当您连接太多表时。通过使用显式连接,如果您忘记放入连接条件并且必须明确指定交叉连接,则会出现语法错误。同样,这会导致查询返回不正确的值,或者通过使用 distinct 来消除效率低下的交叉联接来修复查询。

此外,如果您有一个交叉联接,那么在一年内进行更改的维护开发人员不知道在您使用隐式联接时是否有意这样做。

我相信一些 ORM 现在也需要显式连接。

此外,如果您因为不了解连接的操作方式而使用隐式连接,则很有可能您正在编写的代码实际上不会返回正确的结果,因为您不知道如何评估正确的结果将是因为您不了解联接的含义。

如果您编写任何风格的 SQL 代码,就没有理由不彻底理解连接。

关于sql - 隐式 SQL 连接不能做的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1981601/

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