I try some time ,and I know what is the reason, it only related to a priority.
select * from A a left join B b on a.id=b.id and b.id=2
this means A left join (where b.id=2) this is the condition
filter B first
Select * from A a left join B b on a.id=b.id where a.id=2
this means after join B ,then filter by a.id=2