我很想知道从两个表中选择并加入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
他们会返回相同的结果,但在幕后,会发生什么不同?
答案 0 :(得分:1)
第一个示例是隐式连接,应该避免,因为它可能会在以后维护脚本时引起混淆,此外,当查询变得更复杂时,隐式连接可能会产生不良影响,因为连接的方向不是清除(左/右?),或者你可能最终无意中交叉加入数据。
显式连接通常是一种更可接受的编写查询的方法,因为清晰度和结果集更可靠,具体取决于供应商