Las siguientes declaraciones dan el mismo resultado (uno está utilizando on
, y el otro usando where
):En SQL/MySQL, ¿cuál es la diferencia entre "ON" y "WHERE" en una instrucción 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;
sólo puedo ver en el caso de una combinación externa izquierda búsqueda de los casos "sin precedentes":
(para descubrir los dones que nunca fueron enviadas por nadie)
mysql> select name from gifts LEFT OUTER JOIN sentgifts
ON gifts.giftID = sentgifts.giftID
WHERE sentgifts.giftID IS NULL;
En este caso, primero se está utilizando on
, y luego where
. ¿El on
primero hace la coincidencia, y luego where
hace el filtrado "secundario"? ¿O hay una regla más general de usar on
contra where
? Gracias.
Muy similar a http://stackoverflow.com/questions/2559194/difference-between-and-where-in- join –
Esta pregunta tiene el mejor título de los dos. – ripper234