
[英]Difference between using “ON .. AND” and “WHERE” in LEFT JOIN
[英]What is the difference between using “JOIN” and “WHERE”?
我有两个 SQL 查询,一个是 WHERE,一个是 JOIN。
SELECT * FROM Table1 T1, Table2 T2 WHERE T1.Key = T2.Key AND T2.Key = T1.Key
SELECT * FROM Table1 T1 JOIN Table2 T2 ON T1.Key = T2.Key And T2.Key = T1.Key
这两个查询有什么不同吗? 如果它们相同,使用哪个更有效?
您的第一个查询使用 ANSI-89 SQL 语法,您的第二个查询使用更现代的 ANSI-92 join
语法。 在功能上它们是等价的。 第二种语法更容易阅读,因为它将条件保持在连接表附近。 这在多个连接中更加明显。
有关更多详细信息,请参阅此问题。
是的,两个查询都会给出相同的结果。 第二个使用显式连接并且是推荐的。
至于效率。 大多数数据库会将两个查询优化为相同的执行计划,但很少有数据库可以更好地优化第二个查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.