WHERe是
SELECt整个查询
ON的一部分,是每个单独联接的一部分。
ON只能引用以前使用的表的字段。
如果与左表中的记录没有实际匹配,则从右表中
LEFT JOIN返回一条记录,并将所有字段设置为
NULLS。
WHERe子句然后对此进行评估和过滤。
在您的查询中,仅
gifts返回“ sentgifts”中不匹配的记录。
这是例子
gifts1 Teddy bear2 Flowerssentgifts1 Alice1 Bob---SELECT *FROM gifts gLEFT JOIN sentgifts sgON g.giftID = sg.giftID---1 Teddy bear 1 Alice1 Teddy bear 1 Bob2 Flowers NULL NULL -- no match in sentgifts---SELECt *FROM gifts gLEFT JOIN sentgifts sgON g.giftID = sg.giftIDWHERe sg.giftID IS NULL---2 Flowers NULL NULL -- no match in sentgifts
如您所见,任何实际的匹配都不能在中留下
NULLin
sentgifts.id,因此仅返回从未发送过的礼物。



