INNER JOIN和,COMMA之间的区别

Vic*_*ros 1 sql

我在下面的两个查询和相同的执行计划中都得到相同的结果,有什么区别吗?还是我更喜欢写查询?

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
Run Code Online (Sandbox Code Playgroud)

小智 5

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

第二种选择是写出连接条件,这对于阅读查询的用户来说更为清楚。它显示查询的确切意图。

至于性能或其他差异,应该没有任何差异。在大多数RDBMS中,这两个查询应返回完全相同的结果,并执行相同的结果。

正如@Tim Biegeleisen在评论中所说:

从ANSI-92 SQL标准开始不推荐使用逗号版本

  • 逗号在 1992 年标准中**未弃用**,在任何最新版本的 SQL 标准中也没有弃用。 (2认同)