a left join b on a.id = b.id and a<103;
和
a left join b on a.id = b.id where a<103;
一样吗?不一样的话,区别在哪?
a表
b表
SELECT * FROM a LEFT JOIN b ON a.`id`=b.`id` AND a.`id`<103;
SELECT * FROM a LEFT JOIN b ON a.`id`=b.`id` WHERE a.`id`<103;
很直观的可以看出,条件在on中的时候,只是在关联的时候,对符合条件的关联,不符合条件的不关联,但是数据并不会过滤掉;如果是where的话,不符合条件的话直接就过滤掉了。