where在MySQL中的作用之大就不必说了。
在MySQL中经常使用select来查询数据,其中where在查询数据中占着关键作用,where在查询中一般是用来有条件的查询某个数据:
举个例子:
比如你要查询table中age>30的人,你应该怎么查询?
select * from table where age>30 ;
这样使用没有错吧,如果加上排序这些自然要使用到order by,当然这些都没有明显的区别,当having单独使用时效果也是一样的。
select * from table having age>30 ;
这样使用效果和where一样,区别在于在分组查询,在分组查询中,语法一般为:
select 分组函数 列 from 表名 [where 筛选条件] group by 分组列表[order by 子句]
如果我们需要对分组查询后的数据进行筛选,where就不适用了。看看吧
因为where是聚合前的筛选数据,可以理解为原来表中就有的数据,上面AVG(salary)是聚合之后的数据。
having 使用就为了筛选分组之后的数据。
结果就出来了。所以完整的一个查询语法是:
select 分组函数 列 from 表 where 筛选条件 group by 分组列表 having 筛选条件 order by 排序列表