00:00
大家好,我是上午的讲师孙康,那么接下来啊,咱们该讲这个第九章叫做子查询了,那么在前边儿这个第三章到第八章当中,我们讲的也是这个查询,那查询的基本的一个结构啊,咱们其实已经是都抛给大家了,包括呢,我们在这个聚额函数讲完以后,咱们也写了一个查询语句的完整的一个相当于一个执行的一个流程,对吧?OK,那么这个此查询的话呢,其实里边呢,也是有一些新的内容。也是有些新的内容,那但是整体来讲的话呢,相当于啊是一个什么内容啊,我简单一说大家能明白,就是我们在一个查询结构当中又嵌入了另外的一个查询,那我们把这种结构呢,就称为呢叫子查询,就是没有叫签到查询啊,可能叫签到查询呢,大家更容易理解对吧,只不过呢,我们这个英文当中呢,这个子查询呢,叫做sub curry了,所以我们就习惯了就称为叫子查询了。那么就跟说大家学一些编程语言,C或者是Java等等的,那我们里边呢,是一层for这个循环,外边呢又套了一层for循环,那就是循环里边套循环,那么整体来讲的话呢,这个呃,我们需要关注的就是循环里边怎么去写,套的话呢,那就是语法上其实还是旧的东西了,只不过呢,就是大家理解起来逻辑上的话呢,稍微的难一些而已,对吧?那么咱们这个子查询的呢,也是类似这样的情况,应该说呢,这一章节也是作为咱们这个查询的最后一个章节了,难度上呢,也是达到这个顶峰,在实际开发场景当中,咱们写查询呢是最多的,咱在一开始讲这个SQ的时候呢,就给大家说到这一点了,当时咱们讲说这个。
01:34
咱们在这儿咱先调出来这个内容,代码里边讲到这个基本的select语句的时候。咱们这时候提到了,说这个这个三条主线里边DL呢是最多的,所以这是第一层重,然后增删改查里边呢,查询又是使用频率最高的,难度呢也是最大的,所以我们称为呢叫重中之重,对吧?好这呢我们就说到这个查询了,那这个子查询呢,应该说在整个内容上,从难度上来讲呢,达到一个顶峰,那么从这个重要性上来讲呢,大家需要重点关注的一个叫做子查询,另外一个呢,叫做多表查询,或者叫关联查询,这两个章节呢,需要大家重点关注,咱们在下篇当中给大家呢去讲到优化。
02:18
给大家呢,去讲到这个优化的问题,在优化问题当中,那我们这里边呢,同样的更多的去关注,你看我这虽然写的叫circleq优化对吧?Circleq优化里边呢,其实主要的我们还是针对于查询的优化,那么查询的优化当中呢,更多的呢,就是针对于这种像有这种签到结构的像子查询啊,包括我们这个叫呃多表尔的查询呀,是吧,这块的话呢,是我们关注度比较高的啊,就是相当于我们上篇的讲应用,下篇的讲性能。啊,这块呢,我们这样做一个区分。好,那么言归正传,我们回到这个此查询这样一个章节当中,刚才讲的这句话呢,这个也是符合我这个一贯讲课给大家强调的,我们叫大处着眼,小处着手,对吧?那么大处着眼已经看到了这个章节的这个大体的一个情况了,然后我们开始小处着手,什么叫做子查询?
03:09
子查询呢,就是在一,呃就是将一个查询语句呢,迁到在另外一个查询语句的这个内部,这个特性呢,是从MYSQL4点一开始引入的,那距我们现在8.0呢,已经非常久远了,所以大家呢,你也可以当成这个呃就知道啊,这个不是说一开始有卖SQ就有了,那比较早一个版本就有了,现在完全不影响我们使用,在企业当中呢,现在用的比较多的一个版本呢,当然呢,还是5.78.0的话呢,我们说是这个一六年引入的,到现在呢,现在已经也有,呃这个五年的这个时间了,对吧。8.0的话呢,这个也开始渐进式的这个应用起来了。那这里边儿呢,大家其实应该也有这样一个感触,就是嗯,咱们以这个Java语言为例吧,现在企业当中用的比较多呢,还是这个Java吧,对吧,这个嗯,Java呢,这个是一个编程语言,它的迭代的话呢,或者在企业应用的话呢,企业有的时候呢,就没有特别大的一个动力去更新,那么相比来讲,数据库是不是就是呃,应该讲是更如此是吧,因为数据库的话呢,它存储的是核心的数据啊。
04:07
这个对于一个公司来讲,数据的重要性要远高于你后台这个业务的这个重要性了,你这个用Java写的,我下个甚至都可以不用Java写,我就换成这个,比如说够源了是吧,那你这个用MYSQL呢,迁移到Oracle,这个迁移数据呢,它是一个比较大的工程,那是非常重要的一个事儿,所以说呢,数据库的一个更新啊,对于企业来讲,它这个动力呢更不足。啊,动力更不足。OK行,这呢就说到这个5.7跟这个8.0的问题,那我们在讲课的时候呢,是以8.0为主,相当于是向下兼容的,那么5.7是什么样子呢,我们也会给大家呢去提到啊,OK行,那么我们来看一看,说这个子查询里边说的这个select的这个事儿。这个。子查询的出现呢,大大增强了select的查询的一个能力,因为很多时候查询呢,需要从结果集当中再去获取数据,或者呢需要从同一个表中先计算得出一个结果,然后呢再与这个结果呢进行比较,说白了就是我们一次性的不能够拿到一个确定确定性的一个值,确定性这个值呢,还得通过一个查询去搞定。
05:10
那这个时候呢,我们就要用到子查询。就要用到子查询这儿呢,你看说可能是个标量,也可能是个集合,其实这块呢,就涉及到我们对子查询的一个分类的一个解释,那我们下边都有。好,刚才呢,空说无凭,那我们看一个具体的例子,比如说我们现在有个诉求,说查询谁的工资比阿贝尔的高。谁的逼工工资比阿贝尔高,那首先呢,我们是不是要查出来阿贝尔的工资啊,对吧?那这时候呢,就相当于我们得先计算得出一个数据,那就是阿贝尔的工资,然后呢,在跟这个阿贝尔的工资呢,是不是做一个比较才能够得出来,那此时呢,我们就可以应用子查询,OK,那么这样一个需求呢,其实我们在讲子查询之前,咱们也可以做来咱们这个呢,就看看大家呢头脑风暴一下,有几种方式呢,去解决我们这样一个需求。那首先呢,我们这里边儿呢,先新建一个文件对吧。
06:02
第九章子查询好,我们把它呢,选中之后呢,CTRLS保存一下。保存一下,直接呢,就放到我们这个后边那就可以了。哎,这块呢,说一个小事儿,这个咱们现在测试呢,都是在这个8.0当中进行测试的,那我回看前一章的内容的时候呢,我发现咱们讲这个第八章的时候呢,后续的这个几个内容呢,我都是在这个5.7里边来测试的,这个也没有关系,那因为我们上一章呢,讲这个聚合函数的话呢,5.7跟8.0呢,效果呢都是一样的,所以呢,在5.7跟8.0测试呢,大家那块也都可以,也都可以。好,那这个第九章子查询这块呢,我们还是回到这个8.0这个层面来来进行测试好的,那么首先呢,我们看到刚才这样的一个相当于一个叫需求吧。就是谁的工资比阿贝尔的高。好了,这个问题抛出来以后呢,有的人想说,那我不用子查询,我也可以搞定好,那我们看一看,这个呢,就是我们传统的方式,那么传统的方式呢,大家会发现呢,说谁的工资比阿贝的高,那我得先计算出来阿贝尔的工资。
07:08
那那自然而然的,我们就写一个查询了。查询一下把这个lastname呢,我们也留着salary,然后呢,From。这个employees是吧,然后where。这个salary。哎,Where last name。等于,那就是阿贝尔。这样是吧,好,我们选中执行。阿贝尔的工资呢,我们就算出来了,是一万一啊是11000,其实这块查询呢,我们倒不是说非得要加上这个,呃,阿贝尔了,就是主要呢,我们这个只是想看一看是吧,核心的话呢,是拿到这个11000。这个拿到以后呢,我们接下来呢就好办了,相当于这个题目呢,就转变为说查询谁的工资比一万一高了,那我们就可以查询一下,比如说叫last name,比如说叫salary。然后from employees,然后where什么呀?
08:03
Where,这个salary应该大,谁的功比它高?那就假设,就不要等于了,大于这个11000。这个题目呢,就搞定了,来选中执行出来了,这些人的工资呢,比一万一高,那就意味着比阿贝尔的高。好,那么这个题目呢,我们就搞定了,这个搞定以后呢,大家你要想下一个问题,我们这样写效率高还是低。那么怎么算高还是低呢?那就是我们执行完以后呢,你看你花的时间呗,那通常我们说效率高低,主要指的都是时间复杂度的问题,大家看,那我们这儿呢,比如说你是这个代码呢,我就写在这儿了,相当于是在我们这个web服务器端呢,我们写的是一个项目,对吧。里边呢,有具体的这个业务逻辑了,我们把这个SQL语句呢,比如我叫SQ1了,把它呢,发给我们的数据库服务器啊DBMS。然后呢,这个数据库服务器呢,它相当于呢,去我们这个数据库当中去做一个查询操作,查询出来呢,得到啊,相当于是在返回给我们的这个web服务器这块呢,说得到了这个一万一了。
09:04
然后接下来的话呢,我们再把这个一万一呢,作为一个参数匹配到我们这个Q2当中。然后呢,你在数据库服务器里边再做个查询,再返回给我们这个外部服务器,说得到了是有这样的一条,这这样的一些这个数据,大家你会发现呢,我们是不是跟数据库服务器呢,做过两次交互,那两次交互呢,肯定花的时间比我们一次交互是不是应该要长一点,这里边儿还有这个网络连接的一个问题。你要是远程的话呢,还有一个延迟的问题,对吧?好,那这时候我们就要想能不能那用一个SQL语句来搞定这样一个需求,那一条的话呢,肯定它的效率呢,比两条是要高的,那这块呢,我们写一个这个方式。方式二的话呢,有同学会想说,老师你是不是开始讲这个子查询呢,那我呢就不按套路出牌,咱们说呀,不用子查询,这个题目呢,同样可以做。那我提示大家一下,我们可以使用什么呀?叫自连接的问题。连接自己,连接自己。
10:00
想想。咱们去处理。再连接。你看我都提示大家了,首先呢是多表的一个查询,那其次呢是自己连接自己的,那就是整两个表是不是都叫员工表啊,哎,开始写。Select一下,我们要查的呢,还是这个last name还是这个salary,没问题。行,然后呢,From employees,我这里呢写个叫一,哎这呢,我就用这个SQ92的语法了,Employees。角一二。然后呢,既然你写了两张表,是不是一定要有这个多表的连接条件,对吧?那么这个连接条件呢,它还真不是一个等值的。我们可以这样来处理,比如说这张表啊,我们就让他里边有个员工呢,叫做阿贝尔。就是E1里边呢,有个员工叫阿贝尔,那相当于我们这儿呢,呃,我我先不写连接条件呢,我们再加一个是不是相当于E1的,我们有一个叫last name,他就叫做阿贝。表没问题是吧?好,然后的话呢,这个一二呢,是另外一张表,那一二这张,呃,这个一二这张表里边我们看看谁的工资呢,比一一里边呢,你查的出来这个工资呢要高,实际上呢,这我们叫自连接,另外呢,还是一个叫不等值的链接,那我们就相当于是要计算这个一二.salary它应该要大于这个E1里边的这个salary。
11:20
你看大家能体会吧,这呢,也是我们所谓的这个连接条件。多表的连接条件。咱们前面讲这个多板这个查询的时候呢,这个从不同的角度呢,给连接进行过分类是吧,等值跟不等值呢是一类,然后自连接跟这个非次连接是一类,然后内连接和外连接是一类,行,那这个完事以后呢,你上边这两个字段是不是我们要查的应该是这个一二表里边的呀。OK,这是一个,然后这看一二哎就可以了,行,那么刚才呢,我们用方式一来写的话呢,一共查询到了十行数据,那方式二呢,走起那也是这十行数据,那很显然咱们现在这个方式二呢,比上面这个方式一要好。
12:07
毫无疑问啊,是要好的,因为它只查询了一次,对吧?行,那么有同学会想说这个自连接的话呢,可能自己想不到,这是一个层面,另外一个层面呢,就是我们这道问题的话呢,可以用自连接,可以用多表的查询,但并不意味着所有的。这个什么呀,我们这种,呃,就是可以咱们今天用这种子查询的操作啊,都可以改写成这种多表查询的方式,并不是所有的。并不是所有的,所以说这块呢,我们就想给大家再讲一个是不是更为通用的写一次SQL语句,解决咱们这个问题的一种方式啊,那我们就是今天要讲的这个方式三叫自查询,千呼万唤始出来是吧。这个这个这个是哈。哎,使期出来好,然后呢,我们看一下怎么去搞定这个词查询,那这块呢,咱们定位一下方式一。大家你看我们这个方式一里边,其实主要我们做的是不是就是这个过程二啊,我们想查询一下,说这个到底都有哪些人,但是在这个查询里边呢,我们有一个值叫做11000,这个一万一的话呢,是我们通过第一个过程查出来的,它其实是一个不确定的,就不知道它一开始是几,那我们这时候这一万一呢,咱们就可以把它换掉,换成是一个,哎,算是就是现查出来一个东西,但是现查出来这个东西吧,它又比较复杂,这个一个变量啊,又搞不定,那我们呢,是不是就用一个查询结构呢,来去替换呀,那这个查询结构呢,恰好是不是就是我们上边方式一里边的第一个过程搞定的事儿,所以我们就把这个第一个过程呢,CTRLC一下我就粘过来。
13:42
转过来呢,这个格式呢,不是不太好看嘛,咱们在一开始讲这个SQ的时候提到过,说这个你适当的该有这个缩进呢,就缩进,那这样呢,增加这个口读性,这不是在这儿呢就能体会出来。好,此时呢,大家看我们整体的话呢,就想查询出来说这个工资大于多少的,大于多少呢,我们里边呢,一查就是阿贝尔的这个工资,其实呢,就查出来的是不是就是一万一呀。
14:05
OK,然后外边呢,去做一个使用。来,我们怀着忐忑的心情执行一把。看还是十。那说明呢,我们这个写的呢是靠谱的,那这呢就是我们要讲的子查询。哎,这是咱们要讲的这个子查询。好,那这呢,相当于是我们由一个问题引入这个子查询。那这是我们第一个有。啊,一个具体的啊,需求引入。查询。子查询行,那么这个完事以后呢,我们下边呢,针对于得到的这个子查询啊,咱们进行一个刻画,首先的话呢,咱们先来谈一谈这里边儿的几个名称,这个称谓咱们先做一个。较规范吧。称谓的一个规范,那么称谓的规范呢,大家你看到我们这个查询为什么叫子查询呢?因为很显然大家能看到是不是里边包括两个select对吧,那么这边呢,我们可以叫外层,这个呢叫内层,那自然而然的这个叫法呢,就叫外查询和内查询。
15:11
这是我们里边的几个词,外查询啊,这个还有一个呢,叫做内查询。好,这是一种叫法,然后这个外查询呢,就是我们说这个外外边的其实就跟大家学这个编程语言,里边我们这呢是一个for,外边呢又一层for,那这呢是不是内层for,这个叫外层for是吧?那还有可能是不是外层这块还再套一个for啊,那这个for呢,其实它相当于是一个相对的焦法,相较于内边,里边呢,这个叫外层的for,那相当于在外边层呢,它就成了内层缝了,那我们这也是一样,咱们现在呢,写的是一个两层,那也有可能外边再套上一层,那此时的话呢,我们中间这一层呢,你相交里边呢,就叫做这个这个外查询,你要相信在外边这个呢,你又成了一个内查询了,是这意思对吧?好,那我们就先以这个两层为例,一个叫外,一个叫内,然后这个外查询的话呢,有的时候大家看一些描述上也会把它称为呢,叫做主查询。
16:02
把它呢称为叫主查询也行,那这个叫主查询呢,那这个内查询这块呢,也会对应这个名字,它呢就叫做子查询。你看,因为他也叫做子查询,那也就是呢,我们这块呢,明确说这个狭义上来讲,子查询呢,指的就是这个里边这个,然后整体上来讲呢,相当于它是一个包含这种子查询的,所以有时候就泛泛的说,呃是一个子查询了。OK,就相当于你本身呢,这里边儿呢,这个是一个纯粹的一个查询了,但是现在你里边又包了个子查询,所以我们就把这个呢,就直接称成叫子查询了,就是这个你可以理解成是广义上的一个叫法,这个呢是一个狭义上的一个叫法。好,这个呢,我们相当于是有了这样的一个称谓了,对吧,那接下来呢,我们来看一看这个有没有一些具体的要求啊。来看这里边写的说子查询或者叫内查询,刚才说了这个名了,他在这个主查询之前一次执行完成,然后呢,子查询的结果被主查询或者叫外查询呢去使用,那还有下边的这个注意事项啊,那诶这个注意事项把这个呢,这样一下,我把这几个呢CTRLC咱就直接呢粘过来,需要大家呢去做这个注意的。
17:15
这样子好分析一下子查询呢,在主查询之前一次执行完成,相当于我们这块呢,判断salary大于谁的时候呢,是不是这个内查询都已经把数据先算出来了,所以他肯定是要先计算的,这就是这个意思,下边子查询的结果呢,是被主查询或者外查询使用的,那显然嘛,一万一呢,被我们外查询去使用,那注意事项。好把这个呢,就加重的就去掉了,说此查询呢,包括在一个括号内,这儿呢,我们就写到一个括号内了,因为这个结构呢,整体比较复杂,那我们呢,用个括号呢,标识这个包裹一下,表示它作为一个整体出现。OK,这是我们说的这个,然后呢,这个将子查询放在比较条件的右侧,我们这儿呢,是不是它大于它,这个相当于在比较条件的一个右侧,那有同学就会想说能不能写在这个左侧,那写到左侧的话呢,怎么写呢,是不是就成这样了,你看。
18:07
相当于呢,我们把这个呢干掉。说where这呢,就是我们这个所谓的子查询。就它然后呢,让它呢,应该去小于是吧,这个salary是不是就得这么着写了。那这样写可不可以呢?来选中执行一下,大家会发现呢也行。也行是吧,那这块为什么非得要写到右侧呢?这里边儿呢,其实也涉及到一个可读性的问题,你看我们说where啊,一上来就怼了一堆东西,这堆东西呢,去小一个,这个人总感觉怪怪的。就是我们可读性呢,会差一点,同时的话呢,你从这个美观度上来讲,这块呢,明显的是不是有点头重脚轻啊。这都是头。特别重,脚很轻,而我们这个里边呢,你看整体上来讲,这是一个头,这算一个尾,这个它比较均衡一些,而且从可动性上来讲,直接说谁大于大于一个不确定的,我们去做计算也比较方便一些。所以说呢,这块我们大家以后呢,在写的时候呢,也都注意一下这样一个问题就可以了。
19:04
好,下边这个说单行操作对应单行子查询,多行操作符对应多行子查询,这里边呢,我们又引入了两个新的词,叫做单行查询和多行子查询,前面的话呢,我们是不是说过那个单行函数和多行函数是吧?那这块的话呢,其实大家也能理解这个意思,就是对应的一行数据呢,那就是单行的,那对应多行数据呢,就是多行的查询,那具体来讲是什么意思啊,这呢就涉及到我们下边一个问题,就是子查询它的一个分类对吧,那我这块写成是一个三吧。紫查询的一个分类,这个紫查询的分类的话呢,我们可以从不同的角度区分。来我这块呢,还是把它这个包一下。从那个不同的角度去分,那么第一个角度我写一个叫角度一。这个角度一呢,我们就把它分成叫单行子查询和我就VS一下叫多行子查询。
20:05
行,那么大家呢,自然而然的会去想说这个什么意思,这个针对于我们里边这个呢,咱不是说它叫一个子查询,或者叫内查询,对吧,那如果说呢,这个里边这个数据啊,在查询完以后呢,它只算出来了一个结果。只算出来一个结果,那么供这个外边使用,我们就把它称为呢,叫做单行子查询。就是里边这个查询呢,只出来一个数,你像我们现在这个情况,我要把这个内查询选中以后,咱们一执行,这是不是就这一个数,所以这个呢,就是叫单行子查询,那什么叫多行子查询呢?比如说我们这里边儿查询一下,说工资大于6000的。这个员工的姓名。公司大于6000的员工的姓名,大家能想到是不是有好多员工,那么好多员工,那么作为这个内查询供外边使用的话呢,相当于你这个内查询查出来多条记录,那就叫做多行子查询。就叫做多行子查询,这个呢是比较好理解的,就是我们说的这个,它返回一个,它返回多个对吧?好,这是一个,然后还有另外一种分类方式,就是这个分类方式二,我们按照什么呀,叫内查询是否被执行多次这样的一个角度。
21:15
来我把这个呢也稍微的写一下吧,这个角度音呢是从内查询。相当于它返回的这个结果的条目数。乔木。数从这个角度上,我们分成这个单行的和这个多行的,OK,下一个叫做哎角段二角段呢,我们刚才哎呦粘错了,从这粘粘一下。这个内查询呢,是否被执行多次。是否未执行多次,从那个角度上我们去分的话呢,分成叫什么呀?叫做相关子查询和。B以下叫非相关自查学,或者叫不相关在查学。这个什么意思啊,这块大家可能理解起来稍微有点难度,我这块呢,给大家举个例子,给大家举个例子,那我们上边这个呢,我说呀,它就是一个叫不相关自查学。
22:09
就不相关,就是里边我们这呢,是不是叫内查询,这个叫外查询,它俩呢没有相关性,也就是说你看外边这块呢,是不是要拿着107条记录,然后每一条记录呢,取它这个咱别看它了,咱说了这个是一个,这个不。不推荐的写法。啊,咱们找这个推荐的这个好,那么我们从这个外查询的角度来讲的话呢,我们没有其他过滤条件了,一共呢,就有一百零七一百零七条记录。咱们呢,要取出每一条记录的这个salary,每一条记录的salary呢,去跟这个内查询的这个结果呢去比较,然后大家你会发现呢,不管是第一条记录,第二条记录,还是第三条记录,你跟内查询比较的结果是不是始终返回的,算是一个常量,那就是11000。就是第一条记录100你去跟一万一比,第二条记录还是跟一万一去比,谁过来都是跟一万一去比,那么相当于我们里外呢,就是不相关的。
23:03
它就是不相关的。是这意思吧,那是这样子的,那我们叫不相关子查询,那什么叫相关子查询呢?我们先给大家举一个例子。我这先写一个,比如。比如什么呀,这个相关子查询的一个需求,这个一会儿我们就会写这样的需求,怎么着呢,我们说查询这个。呃,工资大于本部门平均工资的员工信息。但是你看这个需求,我说他就是一个叫相关查询,你看啊,我们是不是要查的是这个员工和他的这个工资是吧,然后呢,这块这个呃,Where,你能想象到我们这个where呢,写的时候where salary大于什么呀,我们这个内查询要查的是啥呀?是你外边呢,一共有107个员工,每一个员工,比如说第一个员工叫张三,张三进来之后呢,拿到张三的工资,看一看张三的工资是不是大于他自己这个部门的工资,所以你返回的应该是张三所在部门的平均工资,比如说呢,平均工资呢,是7000块钱。
24:14
你看这个张三的工资是不是比这个7000大,那下个呢是李四,李四过来以后呢,李四跟张三不是一个部门,那你这块那查询返回的是不是就是李四所在部门的平均工资可能是6500。那么这时候我们就会发现这个外层这一条数据跟内层这个查询这个结果呀,他他你要从单行多行上比,呃来说的话呢,它还是单行的,因为返回的就是这个员工所在部门的平均工资,就这一个数,但是的话呢,每次返回这个数呢,它都不一样,那因为里外呢是有相关性的,那我们就称为呢叫相关子查询。这到相关自然学,大家能理解这个问题吧,啊相关有相关度嘛,你比如说呢,呃,你长得也很帅,这个你媳妇呢,长得也特别的漂亮。啊,然后呢,你俩这个一结合,生了一个孩子,正常来讲通常都不会太丑,那因为是有这个相关性的是吧。
25:05
啊,当然了,这个你可能不是天然的啊,嗯,那这个例子不好再换一个,比如说你也特别白,你媳妇也特别白,生了一个小孩特别黑,嗯,那这个呢,你得想想他是不是报错了是吧。哎,因为你俩有相关性嘛。啊,好了,这就叫相关子查询,那呃,既然我们写这个了,那我对比着,我再给大家写个例子,什么叫不相关子查询?来这块。不相关的查询,那我还是用这个需求说查询工资大于本公司平均工资,诶你看我这样两个字眼一改,我说这个呢,就是不相关的。就是你这块长得帅不帅,你跟人你你旁边这个邻居家的这个这个孩子长得帅不帅没有关系是吧,你俩你又不是老王对吧?哎,他也没有关系哈,那那这里边你看公资大于公司平均工资,那不管你是张三也好,李四也好,大家进来呢,诶去跟内查询比较,内查询返回的都是公司的平均工资,大家比的都是一个数,公司平均工资啊6000多啊6000,比如说四。
26:06
那大家比的都是6400,那相当于咱们就是不相关的资产学OK啊。行,那么这样的话呢,我们把这个子查询那个分类呢,从两个角度呢,就给大家说清楚了,那么整个呢,咱们下边这个内容的讲解啊,也算是基于咱们这样一个规则来去讲的,因为子查询这个内容呢,相对来说,我们说写起来可能这个SQ呢就比较长一些了,这个难度呢就会大一些,所以咱们这样来讲,我呢先来讲这个单行自查询,然后呢再讲这个多行查询,此时在讲的时候呢,尽量。尽量我这块呢,举的这个例子,大家你会发现呢,我还是比较用心的去找这个例子的,我找的呢,都先是不相关资查询,因为相对于相关来讲呢,不相关要简单一点,所以呢,这个单呃单项子查询跟多项子查询,我的先是讲这个不相关子查询。然后这个讲完之后呢,大家对于不相关,对于单行多行也都搞定了,然后呢,我再给大家去专门讲这个叫相关自查询,然后把这个难度呢,是不是给他提起来啊,那么这样的话呢,咱们相当于把这个查询呢,是不是从不同的角度就能有一个透彻的理解了。
27:09
能行吧,好,那包括呢,咱们课后题的话呢,还有很多的练习这块呢,我们多做一些,让大家呢,对整个这个circle,对于这个查询呢,有一个更深刻的一个认识,多做一些题目呢,相当于也增强你的这个实操能力。行,那我们这个呢,就先说到这儿。
我来说两句