WhereandHaving区别-创新互联

Where和Having的异同

专业从事企业网站建设和网站设计服务,包括网站建设、空间域名、网站空间、企业邮箱、微信公众号开发、微信支付宝微信小程序定制开发、重庆APP软件开发、软件开发、等服务。公司始终通过不懈的努力和以更高的目标来要求自己,在不断完善自身管理模式和提高技术研发能力的同时,大力倡导推行新经济品牌战略,促进互联网事业的发展。

(1)where是查询返回结果之前进行过滤的

(2)having是查询返回结果之后,对结果进行过滤的

(3)在SQL中增加 HAVING 子句原因是,where关键字无法与聚合函数一起使用,having子句常跟group by一同使用,过滤分组后的数据

测试表

mysql> select * from t_order; +--------+---------+------------+------------+ | emp_no | dept_no | from_date  | to_date    | +--------+---------+------------+------------+ |  22744 | d006    | 1986-12-01 | 9999-01-01 | |  24007 | d005    | 1986-12-01 | 9999-01-01 | |  30970 | d005    | 1986-12-01 | 2017-03-29 | |  31112 | d002    | 1986-12-01 | 1993-12-10 | |  40983 | d005    | 1986-12-01 | 9999-01-01 | |   NULL | d008    | 1986-12-01 | 1992-05-27 | |  48317 | d008    | 1986-12-01 | 1989-01-11 | |  49667 | d007    | 1986-12-01 | 9999-01-01 | |  50449 | d005    | 1986-12-01 | 9999-01-01 | |  10004 | d004    | 1986-12-01 | 9999-01-01 | +--------+---------+------------+------------+ 10 rows in set (0.00 sec)

Where后面如果提前使用列emp_no的别名aaa进行过滤的话,会报错列不存在,这是因为where字句是先对表进行过滤,才开始查询结果的

mysql> select emp_no as aaa from t_order where emp_no=22744; +-------+ | aaa   | +-------+ | 22744 | +-------+ 1 row in set (0.00 sec) mysql> select emp_no as aaa from t_order where aaa=22744; ERROR 1054 (42S22): Unknown column 'aaa' in 'where clause'

Having后面可以跟列emp_no的原名或者别名aaa都可以,也可以跟group by,然后对分组后的聚合函数列进行筛选

mysql> select emp_no as aaa from t_order having emp_no=22744; +-------+ | aaa   | +-------+ | 22744 | +-------+ 1 row in set (0.01 sec) mysql> select emp_no as aaa from t_order having aaa=22744; +-------+ | aaa   | +-------+ | 22744 | +-------+ 1 row in set (0.00 sec) mysql> select dept_no,min(emp_no) aaa from t_order  group by dept_no having aaa=31112; +---------+-------+ | dept_no | aaa   | +---------+-------+ | d002    | 31112 | +---------+-------+ 1 row in set (0.00 sec)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前题目:WhereandHaving区别-创新互联
文章源于:http://pwwzsj.com/article/dgppip.html