先上实例
有两张表:employee和wages表,表数据如下:
emplyee表:
wages表:
1、先来看一下inner join,条件在where后,select * from employee ey inner join wages wg on ey.id=wg.emp_id where ey.id=1,结果如下:
条件在on后,select * from employee ey inner join wages wg on ey.id=wg.emp_id and ey.id=1,结果如下:
2、在验证一下left join,条件在where后,select * from employee ey left join wages wg on ey.id=wg.emp_id where ey.id=1,结果如下:
条件在on后,select * from employee ey left join wages wg on ey.id=wg.emp_id and ey.id=1,结果如下:
3、right join,条件在where后,select * from employee ey right join wages wg on ey.id=wg.emp_id where ey.id=1,结果如下:
条件在on后,select * from employee ey right join wages wg on ey.id=wg.emp_id and ey.id=1,结果如下:.
结论:又上面可以看出,inner join时,条件在on后还是where后结果都一样,left join和right join结果就不一样了,where条件是在on条件生成结果集以后进一步的过滤,on条件是生成一个结果集,他不管where后面是否有条件。所以对于left join和right join要注意条件放的地方。