我从来没有学过联接是如何工作的,只是使用select和where子句已经足够我所做的所有查询.是否有使用WHERE子句无法获得正确结果的情况,我必须使用JOIN?如果是这样,有人可以提供例子吗?谢谢.
隐式连接超过20年已过时.为什么你会考虑用它们编写代码?
是的,他们可以创建显式连接所没有的问题.说到SQL Server,左右连接隐式语法不能保证返回正确的结果.有时,它们返回交叉连接而不是外连接.这是件坏事.甚至至少回到SQL Server 2000也是如此,并且它们正在被逐步淘汰,因此使用它们是一种全面的糟糕做法.
隐式连接的另一个问题是,通过忘记其中一个where条件很容易意外地进行交叉连接,尤其是当您加入太多表时.通过使用显式连接,如果您忘记放入连接条件并且必须明确指定交叉连接,则会出现语法错误.同样,这会导致查询返回不正确的值,或者通过使用distinct来解除最多无效的交叉连接.
此外,如果您有交叉连接,那么在一年内进行更改的维护开发人员在使用隐式连接时不会知道它是否有意.
我相信一些ORM现在也需要显式连接.
此外,如果您使用隐含连接是因为您不了解连接的运行方式,那么您编写的代码实际上可能无法返回正确的结果,因为您不知道如何评估正确的结果因为你不明白连接的意图是什么.
如果你编写任何风格的SQL代码,没有理由不彻底理解联接.