我只是想知道下面的所有連接在邏輯上是否相等,如果不是,爲什麼不呢?所有這些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