Le seguenti affermazioni danno lo stesso risultato (si sta usando on
, e l'altro utilizzando where
):In SQL/MySQL, qual è la differenza tra "ON" e "WHERE" in una dichiarazione di join?
mysql> select * from gifts INNER JOIN sentGifts ON gifts.giftID = sentGifts.giftID;
mysql> select * from gifts INNER JOIN sentGifts WHERE gifts.giftID = sentGifts.giftID;
posso vedere solo in un caso di un join esterno sinistro trovando i casi "senza pari":
(per scoprire i doni che non sono mai stati inviati da nessuno)
mysql> select name from gifts LEFT OUTER JOIN sentgifts
ON gifts.giftID = sentgifts.giftID
WHERE sentgifts.giftID IS NULL;
In questo caso, viene prima utilizza on
, e poi where
. Il on
esegue prima la corrispondenza, quindi where
esegue il filtro "secondario"? O c'è una regola più generale dell'uso di on
rispetto a where
? Grazie.
Molto simile a http://stackoverflow.com/questions/2559194/differenza-tra-e-del-uno-uno-uno –
Questa domanda ha il titolo migliore dei due. – ripper234