2013-08-09 21 views
12

Czy istnieje różnica między robi coś jakINNER JOIN Gdzie Klauzula

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

Oba są prawidłowe. Czy widzisz niespodziewane efekty uboczne? – Ryan

+0

Tak, mam raczej złożoną kwerendę z wieloma wewnętrznymi złączeniami i po prostu przesuwanie warunku, w którym znajduje się część sprzężenia wewnętrznego, ma znaczenie. Co jest dziwne, ponieważ mogłoby się wydawać, że są one takie same. – Arizona1911

+1

Jeśli zapytanie składa się wyłącznie z wewnętrznych sprzężeń, nie wpłynie to na wynik (chyba, że ​​zapytanie wykorzystuje konstrukcje niedeterministyczne, które mogą się różnić w zależności od planu). Zadaj nowe pytanie dotyczące tego, które zawiera zapytania i wyniki. –

Odpowiedz

4

Nie z sprzężenie wewnętrzne. Zewnętrzne sprzężenie to miejsce, w którym będzie różnica.