00:00
来,我们接着往下讲,第四个叫相关子查询,什么意思?我们看相关子查询,它是按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。这个呢叫相关子查询。好像貌似对应的就应该有一个叫不相关子查询是吧?当然我们没有这个概念啊,说叫不相关的,只是说这个子查询它明确出来了,叫相关的,说明这个外层查询跟内层查询之间的一个关系比较密切,有很强的相关性,怎么个相关性,就是我们红色标注的主查询,每一行数据啊,都会执行一次查询。怎么来理解这个事儿,我们来看一下,我们刚才那会儿写过一个练习。啊,就是它就是这个练习这个练习这个题目这样要求的,按照department name进行排序,我这呢使用了一个子查询。
01:01
子查询,大家你看是不是这样,我外层实际上当你每进行一次select的时候,从这个employees表当中选一个ID,选一个name,它相应的都会执行一遍这个子查询。子查询按照这样一个条件返回一个department department name,那意味着每一条数据都有可能返回的是不同的department name,然后根据这个name的不同进行一个order by是吧?这就是我们说的叫相关子查询,你内外这个相关度是比较高的,因为我使用了一个这个语句是吧?这就说明因为明显的你这个D是内层的表啊,这个E1呢是外层的表。它俩之间有相关性。这就叫相关子查询。那对应的那个貌似说一个叫非相关的什么情况呀,就是我们之前写过的这个例子,比如说select employee salary from employees where salary大于。
02:17
回写,大家就回忆起来了,我们写过这个例子,Select。嗯,诶,大家能记得吧,说返回公司当中工资比阿贝尔这个人工资高的员工的信息。我们是这样写的,当时我们是不是还说了,说真正执行的时候,它是先执行出内存查询。把内层查询的这个结果返回给外层查询,你看这个题目当中你是不是外层,不管你是哪一行数据进来,这个值都一样啊。
03:01
没有一个内外层这个表不同的一个连接条件,不像刚才这个题目,所以它呢就不能算作是叫相关子查询嘛,就是一个很一般的查询,因为你内层返回的结果跟外层的每一行不一样,嗯,跟外层每一行没有关系,返回的数据都是一样的。是吧,都是一个值,这呢一共有11条。嗯,相比较刚才那个相关的,大家理解一下,嗯,这里呢,我们有个框,大家也看一下啊,说get这个环节从主查询中获取候选列。然后cute执行此查询,使用主查询的数据,然后呢,又是如果满足内查询的条件,则返回该行,你看这个是不是就跟我们刚才说的这个练习完全吻合呀,你外层找到一列的数据,实际上这一列是谁啊?就是这个,呃,底盘ID是吧?然后这一列数据在内层当中按照这样一个条件去执行。
04:02
执行的时候都会返回。一个值,当然有的话就返回了,没有就没有了是吧,返回一个值,然后这个值被外层这个查询所使用,就是用它来进行排序。这就是一个相关查询,就是因为有它。啊,就这个意思,来我们看看这里边儿这个题目。哎,这这是这个图是吧,哎,外层这个表在内层中使用了,这就是相关自然。这题目啊,实际上大家这个刚才我们都是不是都写了呀。看查询员工的工资大于本部门平均工资的员工的这一、二、三这三个信息。我把这个粘过来。
05:17
这个题呢,我们刚才是不是都已经做过了呀,哎,我们解释一下带大家啊,你看这不就是查询这三个信息嘛,然后呢,要求比本部门,所以说肯定是子查询了,然后外层这个al在内层中使用连接条件,就是他们的底盘的ID是一样,返回自己这个部门的平均工资。那么意味着你外层每一条数据进去以后都返回一个,应该是不同的avg是吧?当然你是同一个部门的,呃,返回的AG是一样,但是呢,它每一次当你外层一条数据进去的时候,内层都会去再执行一遍,然后返回出来。这就叫相关子查询。
06:02
就是这样的一个结果啊,这个我们就不多说了,然后看这个题目。若employees表中的employee ID与job history表中的employd相同的数目大小于不小于二,输出这些相同的ID的员工的一、二、三三个信息,这呢,又有一个表叫job history。输出这两表当中的说employd,如果有相同相同数目不小于就大于等于二的时候,把这几个人的这个信息给它输出来,我们先看一下这个表,熟悉一下,也就是拉的星from job history。这是这个表中的信息,然后我们看一下啊。
07:03
哎,说employees表中跟这里边儿的employd相同的哇,确实有相同的,你看比如说这里边101,它是不是就恰好等于二啊。说明这是这个员工的这个换工作的啊,换工作的信息,嗯,比如到12月10月27号的,然后28号紧接着又在另一个部门工作了,调换部门了,这是一个人,还有一个176,这个人也是一样的。相当于是我们这个题目啊,他就让你把这两个人给输出出来,是这意思吧。哎,那我们就使用到我们现在讲的叫相关子查询,那就是你外层的这个表,每一每进来一个employ ID都跟这里边的每一个去匹配,匹配完了以后,你看你匹配的个数,如果是大于等于二个的,就把那一条数据外层的给它拿出来是吧,好了,这样明白以后我们就来写了查询哪些信息。Employd last nameme和赵白,嗯,From employ,然后加条件或要求,相当于你外外层这个表里面每进入一条数据,返回着,你看个数跟这个二去比是吧?要求数目不小于二,那要求就是你这个数目得。
08:26
是不是大于,哎,等于这个二吧,那我们习惯上把这个紫差询写在右边,那就是二,哎,小于等于这个括号,这是我们这个子差询要写的是吧?子查询写这个怎么写啊?二比的是不是个数啊?那你这就应该用到主函数叫count星from。知道不?History where加连接条件了,我们这给了一个表,起个别名叫。
09:01
Where要求你里边的这个employee ID等于第一的employee ID?然后看看别的就没有了,那这个题目实际上就这样写,怎么来理解,你看啊,我们外层这个数据进入就按照这个employ ID进入,进入从内层这个job ID照黑这个表当中一条条去匹配。一旦匹配到这个面满足的话,就算是一个一整个变了一变这个表。发现一共有几个,就给它制成一个叫count这个星几个返回,这一旦这个值是大于等于二的,那么这一条信息就作为一个查询结果返回出来,那么整个这个效果相当于就是把这两个表当中呃,相同的数目,如果大于等于二,这些员工的三个信息给输出出来了。是吧,运行一下结果。
10:01
哎,大家看一共有三个人是吧,有101,嗯,176200200也有两个,那就是这三个人。这就叫相关子查询啊,相关子查询,然后后边我们这个叫啊E啊叫ex加S了啊E这个操作符,实际上这个操作符包括下边的这个叫not X,还有后边这个叫相关的更新,他们都是跟相关子查询。有联系的,只不过是相当于它的这个相关子查询的一个应用罢了,那我们看一下这个意思,这个操作符的意思。好,这个操作符检查在子查询中是否存在满足条件的行。他就检查子查询中是否满足条件的行的啊,如果满足的话,就不再继续查找返回处。如果在此查询中不满足条件,然后返回false继续查找。
11:00
这样有点类似于我们讲这个呃循环流程控制的这个这个结构一样是吧,衣服else,一旦你这个呃括号,这个小括号里边返回是true的,我就执行,执行完以后我就退出当前这个条件判断。是这意思吧,好。然后我们看看这个具体怎么来使用它,这呢是一个使用的一个例子,我们写一下这个,通过这个例子我们学习一下叫。的意思是啊。查询公司管理者的employee ID lastname招牌D招呃,Department ID。拿到这个题目以后啊。我们去分析它,它让查询这几个信息,这四个信息都存在于employees这个表中。查询管理者的这个信息,就是说你看管理者是谁,然后找这几个信息,这个我们用旧的知识可不可以解决呀。
12:05
来,我们先用旧的知识把这个题目给它搞定,试看怎么写啊,Select的不就是让查这四个信息吗?From。Employ,一一,这个一一,你把它想象成什么呀,管理者。就只让输出管理者的这几个信息,不是管理者的,不让输出。是这意思吧,好了,那我们就相当于是不是得加上一个Y条件呀,E1的以,所以ID等于,这是我们旧的知识,不过多的举措了,Like。Many from employees ER where1的。
13:00
哎,这个我们就要有点像相关子查询了是吧。我们写法是多种多样的啊,都可以,嗯,行,就这样写吧,一的角。等于ER的many。然后呢,找到这个many ID,这个肯定是有多个了in吧,这样写的话重新调一下。Employees这样。18个是吧,那我们这个题目查到就是18个人。然后这个题目还可以怎么样来写,这是我们用的有点还是今天的这个知识啊,那再用这个旧知识的话,是不是可以这样EMPLOYEES12,然后WHERE11的。Employd等于一的manager ID。
14:04
对吧。然后只不过这样查,大家看结果。这我得指定一下。第一。出来了,这里边儿你看是不是肯定会有重复的这个,那重复的这个我就前面加上一个distinct就可以了吧。18个跟我们刚才上面这种查询方式得到的这个结果是一样的。这是我们通过两种方式来给大家一个解答,这两种方式哪个都行,那么现在我们讲这个又是另一种方式了。有点区别了,查询公司管理者的1234这几个信息,你看我们刚才写的这个题目。
15:03
是不是他呀。是这个是吧,我说你这个题目当中,它是把这个内层的manager ID给返回回来了。哎,我觉得啊,其实根本也不需要我返回什么,那我这样改,Where,我把这个给它改成X。然后这里边怎么来修改select,这我不需要你具体查什么呢啊,我随便写一个东西就行,比如我就写个A吧,Select a from,它where这个这个这个信息。这个题目照常我这样写的话,结果仍然是可以查询出来的,我们看一下是吧,既然是对的,我们怎么来解释一下,这就是我们要说的这个X啊。这个我只需要查询这个employees表中的管理者的这几个信息,我只要知道你是管理者就可以了,具体说你是几号管理者,我在这儿一输出就完了,我也不需要过多的关注。
16:04
我再说一遍,我只需要知道哪一个员工是管理者就完了,至于你说是几号的,我不用过多关注,也就是你内层查询的时候,我不需要你再给我返回出来,你是几号的是吧?你看我们刚才这个查询方式。实际上是告诉我你是几号的,而这个信息我们实际上不需要,我只需要知道你是管理者就完了,那我们就是用的这个意思。内层里边这当然还是一个相关子查询啊,所以说它是相关子查询的其中一种应用,这个的employd跟你内层这个表的manage ID,每外层进去一个就能找到一个manage ID,如果有的话,返回是true,如果没有。就返回是个空,也就是说所谓的false。一旦这里边找到一个就返回处,它就不继续再寻找了,那你找到的放进去的这条数据对应的employ是谁,就将这条数据输出出来,不就是公司的那个管理者吗?
17:06
是吧?你每这个表中找一条数据往里边一放,一旦返回是true,那它就是管理者,不是true,是false就不是管理者。所以这个题目也可以这样来写。啊,这就是这个的一个一个一个题目,然后我们看下一个题。叫not it。这个知道,这个明白了,跟我们讲not一样,Not是空not not不就是非空吗?Not ex就是你这个反馈是true的,加个not不就返回是false。对吧?来我们看看这个题目怎么写。嗯,查询departments表当中不存在于employees表中部门的,哎,这两个信息来,我们就先把这个框写出来,Department department ID department name from department里边这毫无疑问了,是吧?关键是你这个where怎么写。
18:13
不在这个表中的信息。不在这个表中的信息,那你相当于是不是把这个表中的这个这个部门信息给他砍掉是吧,这个实际上我们用旧的方式也能够实现,一会我们再说用旧的方式怎么写,我们先用我们这个新的方式。新的方式的话,嗯,我只要知道你在或不在就行,我先把这个一给它补上,然后呢,具体你是谁我不需要关注,你随便写一个select就行啊,比如说这个C这都可以啊from,他不是说这个employees表吗。对吧,然后where,我们这个给外层这个表起一个别名叫D。
19:05
外,嗯,内层这个表的。Department ID等于外层这个表达department ID。你看我们这个查询呢,是不是要求,哎,这个外层这个表,这个ID应该是在内层这个表里的才返回处是吧,现在他说要求让你返回不存在于这个里边的,那你前边是不是加上一个not就可以。是吧,这个时候当你外层每一个部门的一条数据进去的时候,一旦出现这个条件满足的有数据的话,这个条件满足的有数据的话,它就不让你输出,因为有个note,如果没有,这说明查询到的啊,确实是外层这个数据不存在于employee这个表,不就是我们这个题目中需要的吗?OK。一共有16个,那就意味着这16个部门它都是空的是吧,里边是没有员工的啊,就是这个情况,这个题目实际上我们用旧的知识是不是也可以来解决呀。
20:10
就对值怎么解决啊,我是不是相当于把这个表当中的department ID减去这个表中的department ID,你看这有16个部门啊,我们是不是就可以这样写。Select department ID department name from这嗯。Select的department ID。这我就用一个now来表示,FROM1条椅。嗯,这个我们还得把它去掉,对吧。大家看这是不是也是十条数据?嗯。这16条数据跟这16条就是一样的。
21:03
这是我们用两种不同的方式来实现的啊,当然你说要是在这个里边,你想给它加上这个department name的话,这个题目它。就不行了是吧,这样大家你说有多少条数据。27个。对吧,这是不一样的啊,所以说你要是想让他还带上这个department name的话,就还得用我们刚才说的这种方式来实现not,如果只想看有哪些部门,你可以用我们上节讲的S运算符来实现。啊,这是我们说的这个,哎,X跟not X的这个一个应用,下一个叫相关更新。相关更新这个也是相关子查询,只是说我们在使用到更新这一块如何来用啊。使用相关子加群,依据一个表中的数据更新另一个表中的数据。我们先看这个。
22:00
这是一个例题。我们直接来实现就可以了。想做一个什么事啊,嗯,这样我先创建一个表,这个表啊,就是对employees表的一个复制。我在这写。第一步,对已有表的一个复制,Create table EP,这呢,我对比011吧,As select新from employees。创建好了011啊,这个表创建好以后。这个表我们知道啊,它里边是不含有department name的。是吧,不含有department name,现在我想把这个department department name这个列加到这个表上,然后这个相应的这个呃,Name的值是多少也给附上。那这个怎么来实现,我们把第一步先给输掉。
23:04
那第二步我是不是得先给你把这一列补上呀?是吧,先补上,怎么补?那就是在al table吧,EP011,然后叫R增加一个列,Department name water 28。加上了,加上了,但是你现在这个列是不是都是空的呀,每一个都是空的,那下一个我是不是就想把你这个内幕一个一个的都得补上是吧?补呢,你不能乱补,本身你这个员工是哪个部门的,你就应该补上是哪个部门的内幕。有点有点意思是吧,那我们这个怎么来实现呀。这就是我们第三步要做的事情。第三步,第三步首先你给他补,相当于是你要补这个表里边一条一条数据,那横向来看呢,是DML操作,就是update吧。
24:09
啊,EP011。Update用的是叫set。赛怎么来补?你是要补他们的。Department name对吧。把它给补了,然后department name等于这里边儿就是一个相关子查询。Update他那怎么写啊,你肯定是要写department name了,From那一定是在department这个表里,关键是这个where怎么写,要求你是不是外层这个每进来一条数据,我都得是跟你内存这个departments这个表的ID它俩一样的情况下,返回一个name,然后把这个name是不是付给外层的这个呀。
25:03
就是非常典型的一个相关子查询,再说一遍,我外层每进来一条数据,一开始它是空的啊,进来这条数据都对应着一个department ID,从你这里边儿找跟我这个department ID一样的那个部门,把他的这个name输给他。就是先进去再出来对吧,就是where,嗯。Department ID等于EP011的department ID。来运行一下。执行了,然后我select星from em011,大家你看一下。那这个表里边肯定是在最后一列了,相应的这列是不是就给附上之类。这就是我们使用的一个相关子查询实现的一个更新操作,那以后当你再查询跟这个name和嗯。
26:06
呃,员工相关的,我就不需要再用两个表了,因为我把这一列是不是已经集成到一个表当中了。就是这个意思啊,好了,那相应的还有一个叫相关的删除操作都是类似的哈,嗯,叫delete。使用相关子查询,依据一个表中的数据删除另一个表的数据。有一个例子,我们把它也写一下。删除表employees中其与这个表皆有的数据。相当于把这个表当中跟这个表当中是不是共同的那一部分数据给它删除呀。是这意思是吧,删除的话,那我们得先有一些准备工作。这样我得我我先造两个表好吧,Create table叫EMP022,比如说。
27:05
爱的星。老意思。Where department ID in?八十九十,我把80号92部门的这个数据付给他。OK。然后我再造一个033。把92部门的数据给他。执行成,然后我们看一下select星form ep022。这是37条数据,这有三条数据,上面这个表当中,大家也注意到它是有三条数据。
28:07
是90号部门的,剩下的呃,34条数据是80号部门的,现在我想把这个表中的数据。哎,跟这个表一样的,这三个给他干掉,那就意味着只要80号部门的,那这个怎么去写。咱们去执行,我现在是想进行的是一个删除操作,而不是仅仅的一个查询是吧,如果仅仅是一个查询的话,那就是跟我们上节讲的内容是不一样的呀。我们上一节讲的叫set运算图,那是不是这样写,如果我仅仅是要查询的话哈,Select的星from emp022,然后呢,M select的星from ep033。就是把022当中跟零三三一样的给它减出去,不就34个吗。这仅仅是一个查询,相当于是吧,没有真正的改,你要改的话,那就得是delete了,Delete from ep022。
29:08
然后呢,我吧。嗯,Where,你得把他们部门那就是where departmentt哎,不是,哎,对department ID是吧,Where department ID。等于某一个。Department ID from ep033 where,嗯,这个。Department ID是不是等于EY层的零二,二的department ID?他俩这个部门ID都一样。哎,如果有一样的话,把这个一样的这个值是多少付过来,然后把这个值给它删掉是吧。
30:07
返回多个多个值。直行成,然后你在select的新from e022。那34条这就已经把跟这个EP033一样的这个数据给删掉了,全是80号部门的。啊,那这个题就这样来实现。那么这个讲完以后,我们关于相关子查询就说完了,实际上我们刚才讲的这几节啊,哎,相关子查询里边两个主要应用,一个是它,一个是它。当然他自己也有自己独立的这个应用啊,最后还剩一个叫位子句,我们看一下这个位子子句是什么意思。这里也有关于位置子句的一个说明,说使用位置子句可以避免在s select的语句当中重复书写,书写相同的语句块,位置子句将该子句中的语句块执行一次,并存储到用户的临时表空间当中,使用它可以查询,可以提高这个查询的效率。嗯,之所以能提高效率,就是由于嗯,它可以避免你重复书写,然后能存储到这儿,你下次可以直接来调用,这不就提高了查询的效率了。
31:30
是吧,这都好理解,关键是我们是不是怎么来使用这个东西叫词句啊,怎么使用它是吧。好怎么使用,我们看这里边有一个题目。这个题目是它啊,这个题目还挺长的,我们先写一个比较简单的,然后我们再来说这个比较复杂的一个题目。简单,简单到什么程度呢?还是我们一个老题,通过老题我们把这个新东西引进来,这样大家比较熟悉。写什么?还是写这个老题目说,嗯,查询工资中工资比。
32:11
啊,贝尔高的员工的信息,这个啊,我们都写了好多遍了,我们换成使用位置子句怎么来实现。啊,位置子句,或者我们这样啊,我先把这个老的题目,我们实现的方式写出来。这题是这样写的吧?
33:02
这是查询的值,我们先把它这个值返回回来,然后付给外层,这个查询得到最后的结果,我们要把这个题目改成使用with词句,你看怎么来实现。你看我先写上位。然后我给这里边儿重新命名了一个表。啊,可以命令表就叫,嗯。Are there salary as。哎,这怎么写跟他一样。能不能看懂啊,就是我这是查询了阿贝尔的这个工资啊,然后把它相当于查询了一个结果,我当成是一个表也好,你可以理解成一个表,这个就放在这了,放在这以后,我这接下来是不是就是要查询呢,我就拉它。
34:07
就是这个东西。你要查询这个小括号里边是不是就需要你写上啊不的工资啊,刚才我们就是直接应查询的,但现在是不是这个都已经给你查好了呀,我只需要把这个。他的是不是这个信息给他查询出来就可以了,所以呢,就是select salary from。这里。把这个工资拿到,然后这个工资比他大就行。大家看是不是还是11条数据啊,呃,这个就是我们使用这个叫位置词句。啊,当然这个是比较简单的一个微字子句,所以说你从这个题目当中,现在来看的话,貌似不用微字子句更简洁,但是呢,它是一种解决问题的一个思路,当你这个问题比较复杂的时候,哎,也就是说当你这个题目需要进行多层的这个查询,然后依托于之前的个查询的一个效果的话,我们就先把你要查询这个东西先储存,先放到这儿,然后把好几个啊,最后来一个select,用上你之前储备的这几个词句。
35:20
是吧,这呢不就相当于这是储备这个子句里边存在salary,我这直接调用就行是吧?当题目越来越大的时候,你使用位置子句就会明显的是思路清晰,而且结构非常的明确。写起来也更简单。这是一个比较简单的一个例子,然后呢,我们回来看这个例子,如何使用微子子聚来进行实现查询公司中各部门的总工资大于公司中各部门的平均总工资的部门信息,查询部门信息,比如说让你反馈一下这个部门的名字是吧,那都有哪些?那我们来写这个题目啊。
36:02
你说C。重开一个这个窗口,然后ED执行正确,V来我们写,他说让查询公司当中各部门的总工资大于公司中各部门平均的总工资的部门有哪些,然后把这个部门的信息给他输入出来。如果你刚拿到这个题目,没有什么思路的话,那你就先看看你能够得到哪些东西,比如说各部门的总工资这个事儿大家能不能做到。应该差不多是吧,然后各公司中各部门平均的总工资再想办法去求,那我们先把第一个搞定了。希拉克的。嗯,那这个信息呢,我们后边可能也要用,所以说我们这就直接来查询一下,除了我查询一下这个总工资叫sum salary是吧,除他之外呢,我再查询一个叫department name,你看各部门叫什么名from,显然这里边salary是employees表的,这是departments表的,那就departments d employees d。
37:18
加上一个连接条件是吧?d.department ID等于e.department ID,同时别忘了求BY按照它来分组啊。哎,其他的内部或者习惯上我们把它写在前面,看着比较难受是吧,那你就给它放在前面也行。这个我就相当于求出来各个部门的总工资了,运行一下。就是这样的是吧,然后各部门总公司找到了,然后再往后看,然后说呢,公司中各部门的平均总工资。
38:05
平均总工资,我刚才算出来是各部门的总工资,然后下一步是不是需要做的,就是你把这些值是不是都加起来,然后除以11吧。除以11,你看得到一个平均的总工资,你看看这是一个里边有哪些是比刚才你求出来的平均那个总子高,把那几个部门给他输出出来。这个题目首先大家你得搞清楚啊,这是11个部门,然后这个工资里边,你看哪一个比你直接加起来除以11那个值大,把那个大的这个信息输入出来,那相当于我是不是得依托于我现在算的这个结果。然后再求出一个平均总公司,然后再比较谁比它大。那你要么呢,是用这个紫查询,那就得多层嵌套,非常的恶心,那何不你看现在我们得到这个是不是就是个现成的呀,那现成的这个东西呀,我想后边用用它,那我们就要用到的这个叫位置子句。
39:07
A子句怎么整啊,看我这写上一个叫哎位置。嗯,DEP some salary,然后as怎么来实现的,是不是这样写的呀?这就是我们现在得到的这个表,然后为了方便啊,我给你这个萨这个再起上一个别名。Some salary。那现在这个结构就放在这儿了,这是一个结构,然后我再给你提供一个结构,哎,中间用逗号隔开写,再经过什么结构啊,我是不是让你查询这个东西,然后这俩再去比的时候,我写到select中的,写到select中。嗯,位置这个怎么写,你可以就叫平均的avg。像DPGBG。
40:01
As。在这写吧,怎么写?Select,你不是现在需要查询的,是公司的。各个部门加起来的平均的他总工资是吧,那相当于是把这个值再求一个和呀,这个仅仅求出来的是,或者这个别名是各个部门的。总工资,然后把它们加起来,那就是哎,Some somec。这个求一个和from是不是就这个表啊,这个表你把这个都给它算出来。这你再起个别名也行,嗯。John。Some salary1吧。或者这个角一,这个角二,那这个就是用的是一对吧。
41:01
这个值是公司整个的总和,他现在要的是平均,那你再给它除以一个上星。这样写吧。不,他。那这个值算出来的是公司的平均总工资是多少?就是这个值。好了,这个提供完以后,是不是让再进行比较,就是select了,这两个结构放在这儿,然后你写上select,他想查询这些部门信息,是不是就相当于从这个表中去查呀。那这个表我就查询你的星from。这个表where。这怎么写啊,是不是就是你这个表的,它有一个信息叫他吧,就是相当于它的CTRLC这个列,就是你各个部门的总工资大于公司的平均总工资。
42:06
Select的是这个值from,诶。是这个表,那这个返回的是公司中这个各部门的平均总工资。然后你看哪个部门啊,总工资比这个平均总工资大,返回回来。最后呢,你还可以再来一个排序。Order by这个表里边的这个列不就是这个表吗,这个列。是吧,OK。嗯,表明无效位置。哎,那这个我们把它去掉,这就不用写了。好了,那就是这两个部门,这两个部门这个平均总工资比较高。
43:00
嗯,那么这个题我们就解决了,这个题目解决完以后啊,我们整个这一章就讲完了。啊,这一章的内容也比较多,难度呢,也比我们之前讲的要难一些,我们再稍微捋一下哈,实际上我们讲了这样几块内容,一呢叫多列子查询。里边它又分为成对和非成对的啊,然后呢,对应的多列子查询,有个叫单列子查询。单离子查询啊。后边相关词查询,这是我们讲的一个重点,它的两个应用,一个叫意思note思词和相关更新和删除,最后我们说了个叫位置词句。中间实际上还穿插了一个叫from是吧。嗯,在from句中使用自杀区,整个这个内容,大家你把这个题目哎再都写一写。然后后边我们再讲这几个练习。
我来说两句