- on是在生成临时表的时候使用的条件,不管on的条件是否起到作用,都会返回左表的行
- where则是在生成临时表之后使用的条件,此时已经不管是否使用了left join了,只要条件不为真的行,全部过滤掉。
=> 所以 where 要写在 on 之后
例:
SELECT t.*, r.name AS remunerationName, b.total_balance AS totalBalance
FROM teacher t LEFT JOIN remuneration r ON t.remuneration_id=r.id
LEFT JOIN balance b ON t.id=b.teacher_id
WHERE 1=1 ORDER BY `date` DESC LIMIT 1
参考:
mysql inner join where,MYSQL left join中 on条件和where条件的位置作用及关系