2013-08-09 14 views
12

Gibt es einen Unterschied zwischen etwas zu tun, wieINNER JOIN Where-Klausel

SELECT * 
FROM table1 INNER JOIN table2 ON table2.ObjectId = table1.table2ObjectId 
WHERE table2.Value = 'Foo' 

vs

SELECT * 
FROM table1 INNER JOIN table2 
ON table2.ObjectId = table1.table2ObjectId AND table2.Value = 'Foo' 
+0

Beide sind gültig. Sehen Sie unerwartete Nebenwirkungen? – Ryan

+0

Ja, ich habe eine ziemlich komplexe Abfrage mit vielen inneren Joins und einfach die Position zu verschieben, um Teil des inneren Joins zu sein, macht einen Unterschied. Was seltsam ist, weil man denkt, dass sie gleich sind. – Arizona1911

+1

Wenn die Abfrage ausschließlich aus inneren Joins besteht, hat dies keine Auswirkungen auf das Ergebnis (außer möglicherweise, wenn Ihre Abfrage nichtdeterministische Konstrukte verwendet, die abhängig vom Plan variieren können). Stellen Sie eine neue Frage dazu, die die Abfragen und Ergebnisse enthält. –

Antwort

4

nicht mit einer inneren Verknüpfung. Eine äußere Verbindung ist, wo Platzierung wird einen Unterschied machen.