on、where、having这三个都可以加条件的子句中,
执行顺序:
on是最先执行,where次之,having最后。
执行结果:
如果这先后顺序不影响中间结果的话,那最终结果是相同的。
执行速度:
但因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的。
使用场景:
on是在进行多表连接时使用,where和having是在单表时使用。
on是在表连接时生成临时表时使用,在left join时无论on中条件是否为真它都会返回左表中所有的数据。
where是在临时表生成后对临时表进行过滤的条件。
having一般用在计算之后。