欢迎投稿

今日深度:

ON、WHERE、HAVING的区别,wherehaving

ON、WHERE、HAVING的区别,wherehaving


           ON 、WHEREHAVING都能通过限制条件筛选数据,但他们的使用及其不同。下面我们来分析三者之间的区别。

1.       ON 和WHERE

        所有的查询都回产生一个中间临时报表,查询结果就是从返回临时报表中得到。ONWHERE后面所跟限制条件的区别,主要与限制条件起作用的时机有关,ON根据限制条件对数据库记录进行过滤,然后生产临时表;而WHERE是在临时表生产之后,根据限制条件从临时表中筛选结果。

           因为以上原因,ONWHERE的区别主要有下:

1)  返回结果:在左外(右外)连接中,ON会返回左表(右表)中的所有记录;而WHERE中,此时相当于inner join,只会返回满足条件的记录(因为是从临时表中筛选,会过滤掉不满足条件的)。

2)  速度:因为ON限制条件发生时间较早,临时表的数据集要小,因此ON的性能要优于WHERE

2.       HAVING和WHERE

          HAVINGWHERE的区别也是与限制条件起作用时机有关,HAVING是在聚集函数计算结果出来之后筛选结果,查询结果只返回符合条件的分组,HAVING不能单独出现,只能出现在GROUP BY子句中。;而WHERE是在计算之前筛选结果,如果聚集函数使用WHERE,那么聚集函数只计算满足WHERE子句限制条件的数据,例如:

     SELECT COUNT(id) FROM db_equip WHERE tb_equip_type = ‘2’;

           Count计算的结果是首先筛选设备类型为2的的设备,然后统计设备类型为2类型的数量。

       在使用和功能上,HAVINGWHERE有以下区别:

1)  HAVING不能单独出现,只能出现在GROUP BY子句之中;WHERE即可以和SELECT等其他子句搭配使用,也可以和GROUP BY子句搭配使用,WHERE的优先级要高于聚合函数高于HAVING

2)  因为WHERE在聚集函数之前筛选数据,HAVING在计算之后筛选分组,因此WHERE的查询速度要比HAVING的查询速度快。

3.       总结

        ON、WHERE、HAVING的主要差别是其子句中限制条件起作用时机引起的,ON是在生产临时表之前根据条件筛选记录,WHERE是从生产的临时表中筛选数据,而HAVING是对临时表中满足条件的数据,进行计算分组之后,通过HAVING限制语句筛选分组,返回结果是满足HAVING子句限制的分组。

数据库中where与having不同

having 和where 都是用来筛选用的
having 是筛选组 而where是筛选记录

他们有各自的区别

1》当分组筛选的时候 用having

2》其它情况用where
-----------------------------------------------------
用having就一定要和group by连用,
用group by不一有having (它只是一个筛选条件用的)
-------------------------------------------------------
例子
表结构
部门编号 姓名 工资
1 aa 2000
2 bb 1200
1 cc 2100
2 dd 1800
1 ee 2100
3 ff 8000
2 gg 2200
3 hh 4500

查询有多个员工的工资不低于2000的部门编号
(就是说如果一个部门的员工大于2000的人数有两个或两个以上就查询出来)

select 部门编号,count(*) from 员工信息表
where 工资>=2000
group by 部门编号
having count(*)>1

where 针对每一条记录筛选
而 having 对同一个部门的分组
count(*)>1 计算多于两个的部门

查询结果为

1 3
3 2
另外,站长团上有产品团购,便宜有保证
 

SQL语言中where与having有什不同?

--补充
select ··· from ···
where ···(只能对分组前的属性进行筛选)
group by ···
having ···(只能对分组后的每个组的整体属性进行筛选,用聚合函数体现)
····
--不使用group by就默认表的整体为一组
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2900.html NewsArticle ON、WHERE、HAVING的区别,wherehaving ON 、 WHERE 、 HAVING 都能通过限制条件筛选数据,但他们的使用及其不同。下面我们来分析三者之间的区别。 1. ON 和WHERE 所有的查询都回产生一个中间临...
评论暂时关闭