【问题标题】:Difference between INNER JOIN and , COMMA [duplicate]INNER JOIN 和 , COMMA 之间的区别 [重复]
【发布时间】:2018-02-09 13:48:28
【问题描述】:

我在下面的两个查询和相同的执行计划中得到相同的结果,有什么区别吗?或者这正是我更喜欢编写查询的方式?

SELECT PS.StepID,PR.ProgramID FROM ProgramSteps PS, Programs PR
WHERE PS.ProgramID = PR.ProgramID

SELECT PS.StepID,PR.ProgramID FROM ProgramSteps PS
INNER JOIN Programs PR ON PS.ProgramID = PR.ProgramID

【问题讨论】:

  • 标记的重复项将进一步解释,但作为一般经验法则,您应该始终使用JOIN而不是逗号。
  • 它们生成相同的计划,但不推荐使用隐式 (,) over 25 years ago,而显式 (JOIN) 是标准。
  • 今日提示:使用现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。
  • @VictorHugoTerceros 是的,隐式 INNER JOIN 仍然是,但 SQL Server 2016 根本不支持 OUTER JOIN 隐式语法 (*=)。
  • @Siyual - (,) 已被弃用。您发布了标准。我搜索了它。如果您能指出不推荐使用逗号的页面,我将不胜感激......

标签: sql


【解决方案1】:

一个区别是第一个选项通过在 where 子句中表达连接条件来隐藏意图。

第二个选项,连接条件被写出,对于阅读查询的用户来说更清楚。它显示了查询的确切意图。

就性能或任何其他差异而言,不应该有任何差异。在大多数 RDBMS 下,这两个查询都应该返回完全相同的结果并执行相同的操作。

正如@Tim Biegeleisen 在 cmets 中所说:

逗号版本自 ANSI-92 SQL 标准起已弃用

【讨论】:

  • 逗号在 1992 年标准中未弃用,在任何最新版本的 SQL 标准中也没有。
猜你喜欢
  • 2019-09-03
  • 1970-01-01
  • 2011-09-09
  • 2013-10-16
  • 2019-01-17
  • 2010-10-08
相关资源
最近更新 更多