在两个表中选择和在MSSQL中使用内部联接有什么区别?

时间:2014-07-17 09:24:02

标签: sql sql-server

我很想知道从两个表中选择并加入WHERE子句和显式使用JOIN子句之间的区别。

对于它的价值,我使用的是MSSQL而不是Oracle,因此我对MSSQL中的内部工作方式感兴趣,所以除非这会产生与Oracle相同的效果,this question对我没有帮助。

举例说明以下两个陈述:

SELECT a.Field1, a.Field2, b.Field1
FROM tbl_ExampleA a, tbl_ExampleB b
WHERE a.Field1 = b.Field1

SELECT a.Field1, a.Field2, b.Field1
FROM tbl_ExampleA a
    INNER JOIN tbl_ExampleB b
    ON a.Field1 = b.Field1

他们会返回相同的结果,但在幕后,会发生什么不同?

1 个答案:

答案 0 :(得分:1)

第一个示例是隐式连接,应该避免,因为它可能会在以后维护脚本时引起混淆,此外,当查询变得更复杂时,隐式连接可能会产生不良影响,因为连接的方向不是清除(左/右?),或者你可能最终无意中交叉加入数据。

显式连接通常是一种更可接受的编写查询的方法,因为清晰度和结果集更可靠,具体取决于供应商