暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
SQL进阶技巧HAVING子句详解.pdf
158
18页
0次
2023-11-20
免费下载
SQL 进阶技巧——HAVING 子句详解!
关于 SQL 我之前已经陆续更新了很多期,从入门到基础知识再到练习
和面试技巧都有分享,大家感兴趣的话可以去看下这篇文章。
本篇主题为 HAVING 子句详解。
SQL 给人感觉不同的原因有几个。第一个原因是,它是基于面向集
”思想设计的语言,具备同样特点的语言非常少;第二个原因是,
受最初学习的语言而形成思维定式的影响,在理解另一种思想的语
言时会遇到更多阻碍。
本篇文章将为大家介绍一 HAVING 子句的各种使用方法,同时比较
一下面向过程语言和 SQL 在思考方式上的区别。这有助于我们摆脱过
往形成的思维定式,进而更好地适应 SQL 语言的特点。
在之前的文章中,我们讲解了将表看作抽象度较高的集合”这一基
本思想,本篇文章将通过 HAVING 子句,来进一步地讲解以集合为
单位进行操作”这一特征。
01、寻找缺失的编号
假设现有一张带有“连续编号”列的表,如表 SeqTbl 所示。我们在使
用自动分配的数值时经常会见到像这样的表。
虽然编号那一列叫作连续编号,但实际上编号并不是连续的,缺少了
4 7。我们要做的第一件事,就是查询这张表里是否存在数据缺失。
如果像本例这样,数据只有几行,那么我们一下子就能找出来。但
是,如果数据有 100 万行,应该没有人用肉眼去查询了吧。
如果这张表的数据存储在文件里,那么用面向过程语言查询时,步骤
应该像下面这样。
1、对“连续编号”列按升序或者降序进行排序。
2、循环比较每一行和下一行的编号。
步骤很简单,但是也体现了面向过程语言和文件系统处理问题的特
点:文件的记录是有顺序的,为了操作记录,编程语言需要对记录进
行排序。
表的记录是没有顺序的,而且 SQL 也没有排序的运算符。SQL 会将
多条记录作为一个集合来处理,因此如果将表整体看作一个集合,就
可以像下面这样解决这个问题。
--
如果有查询结果,说明存在缺失的编号
SELECT '存在缺失的编号' AS gap
FROM SeqTbl
HAVING COUNT() <> MAX(seq);
结果:
gap
----------
of 18
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜