Die folgenden Aussagen geben das gleiche Ergebnis (eine ist mit on
und den anderen where
verwenden):In SQL/MySQL, was ist der Unterschied zwischen "ON" und "WHERE" in einer Join-Anweisung?
mysql> select * from gifts INNER JOIN sentGifts ON gifts.giftID = sentGifts.giftID;
mysql> select * from gifts INNER JOIN sentGifts WHERE gifts.giftID = sentGifts.giftID;
kann ich nur in einem Fall eines links außen sieht die „unvergleichlichen“ Fälle beitreten zu finden:
(um die Geschenke herausfinden, die nie von jemandem geschickt wurden)
mysql> select name from gifts LEFT OUTER JOIN sentgifts
ON gifts.giftID = sentgifts.giftID
WHERE sentgifts.giftID IS NULL;
In diesem Fall wird zunächst on
verwenden und dann where
. Trifft die on
zuerst die Übereinstimmung und dann where
die "sekundäre" Filterung? Oder gibt es eine allgemeinere Regel der Verwendung von on
gegenüber where
? Vielen Dank.
Sehr ähnlich zu http://stackoverflow.com/questions/2559194/difference-between-and-and-where-in-joins –
Diese Frage hat den besseren Titel der beiden. – ripper234