我在下面的两个查询和相同的执行计划中得到相同的结果,有什么区别吗?或者只是我更喜欢写我的查询?
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
答案 0 :(得分:4)
一个区别是第一个选项通过在where子句中表达连接条件来隐藏意图。
读取连接条件的第二个选项对于读取查询的用户更清楚。它显示了查询的确切意图。
就表现或任何其他差异而言,不应该有任何。两个查询都应返回完全相同的结果,并在大多数RDBMS下执行相同的操作。
正如@Tim Biegeleisen在评论中所说:
自ANSI-92 SQL标准
起,不推荐使用逗号版本