我只是想知道下面的所有连接在逻辑上是否相等,如果不是,为什么不呢?所有这些SQL连接在逻辑上是否相同?
SELECT t1.x, t2.y from t1, t2 where t1.a=t2.a and t1.b=t2.b and t1.c = t2.c;
SELECT t1.x, t2.y from t1 join t2 on t1.a=t2.a where t1.b=t2.b and t1.c = t2.c;
SELECT t1.x, t2.y from t1 join t2 on t1.a=t2.a and t1.b=t2.b where t1.c = t2.c;
SELECT t1.x, t2.y from t1 join t2 on t1.a=t2.a and t1.b=t2.b and t1.c = t2.c;
我想我真正的问题是:“上”做一些只从具有“开”相与在一起的多条件组合的不同“其中”用?
我使用MySQL,以防万一。
第一个查询是否会完全执行交叉连接,还是DBMS足够智能以便首先应用where子句? – 2009-02-23 17:16:36
从SQL Server 2000版开始,将推断顶层示例为INNER JOIN。测试它并查看执行计划 – 2009-02-23 17:18:48