在mysql中,有三种配合条件使用的关键字,分别是where、on、having,这三个关键字使用和效率上是有很大的区别的:
where:
我们最一开始使用的使用的关键字就是where,where的功能是定义表(包括临时表)行记录的查询条件。
on:
on关键字在连表查询时使用,它定义了连接查询时表连接的条件,on查询结果为临时表,如果在连接查询SQL中同时使用where,where条件用于判断on查询的临时表的行记录条件。很显然on条件会先执行,使用得当的话,on会比where的效率一些,因为on直接根据条件生成临时表。
having:
having条件可以用在聚合函数分组过滤后,对分组的结果进行过滤。其实having完全可以代替where使用,但是如果域where联合使用会在where语句之后执行。
使用规范:
一般在查询原表时使用where,在对中间临时结果集进一步过滤时使用having