00:00
那么我们趁热打铁,直接呢,就开始来上这个单行自查群。好,单行子查询,单行子查询的话呢,我们说了就是你这个内查询返回只有一个数据,那么一个数据呢,是不是供我们外部呢去使用吧,哎外部使用,外部呢,说我们这呢,通常也是一个字段了,说这个字段呢,怎么着这个内部的你这一个数据,所以这里边呢,就会涉及到一个单行子查询的操作符,那这个操作符的话呢,我这呢写的这样一些,大家你看一下,其实也很好理解,说呢这个等于那里边你查出来这个数据,或者大于你里边这个数据大于等于小于小于等于不等于,那这呢就是对应的我们叫单行比较凑凑符,那一会儿呢,我们讲这个多行查询的时候呢,还有多行比较操凑符,那不太一样。啊,不太一样,好,那我们先把这个呢先写一下。放到这这个呢,是我们这个第四个先来讲单行子查询。单行再下去,那首先呢,我们这里边儿这个我就写一个4.1吧,单行操作符。
01:02
这个操作符呢,其实比较简单,就是我们前面讲的那些比较运算符对吧,那首先呢,是这个等于,然后呢,这个比如说不等于,然后大于大于等于小于小于等于,哎就这些。好,那么接下来的话呢,我们其实就是讲一些例子了,所以呢,我一开始说子查询的时候也提到过,说没有太多的这个讲究,或者这个一些新的这个关键字啊等等的,就是我们对原有的这个查询呢,就告诉你一个里边套一个是吧,那关于这个理论上的知识啊,其实咱们刚才在讲的也差不太多了,差不太多了,当然了,我们讲到这个相关子查询的时候呢,再给大家讲几个这个关键字啊,那么除此之外的话呢,前面这些呢,其实我们也没有什么新东西了,咱就是通过练习让大家呢去练这个子查询就可以了。好,那下面呢,我们就一个一个的做这些题目。大家来看一下,经过前边我们讲的这个查询的积累,你这块题目的这个这个编写能力呢,是不是有所提升,好我们来看第一个。说查询这个工资大于149号员工工资的,呃,员工资的这个员工信息,这里边儿提到一个说149号员工的工资了,这个呢,对于我们现在来讲是一个未知的,那我们就可以是不是用一个内查询来去刻画这个149号员工的工资呀。
02:15
好,那么这个具体该怎么写呢?那那这块呢,其实嗯,那先说一下也行啊,先说也行,一会儿呢,大家再去体会,就是给大家呢讲一个技巧。什么技巧呢?就是子查询的一个编写技巧。我叫编写技巧也行,或者呢,叫编写的一个步骤也可以。就是大家呢,写这个子查询的时候呢,你怎么去写啊,其实有两个思路,第一个思路呢,叫做从里往外写。第一个思路叫从里往外写,第二个思路呢,叫从外往里写。哎,那么因为呢,你至少是不是有两层了,那么这是外,这是里,你是这样写,这不就是从外往里写,你要是先写里边再写外边,这是不是就从里往外写呀,那么这两种写法有什么区别,大家呢,这个该怎么去选择呢?咱们先不说,咱们先这个先走走看,然后呢,通过我们这样一些案例呢,讲解以后呢,那我给大家去总结,什么情况下呢,建议你这样写,什么情况下呢,建议你这样写,OK。
03:17
那至于说我们这道问题的话呢,因为它还是比较简单的,所以呢,你从里往外,从外往里都可以都可以。那这块呢,比如说我是先从里往外写吧,从两外的话呢,那你就得先看到我们是不是要先查询一下,一要因为你要做这些事儿,查比工资了,你是不是都不知道149号员工到底挣多少钱啊,所以你先查一下这个149号员工他到底挣多少钱,那select一下salary。那from employees,然后where这个,诶不是last name,这个employee ID是吧,是149,诶就这哥们,那我查到他这工资是多少钱,你看啊,10500好,那这个题目呢,就改成说查询工资大于10500的员工信息,那对大家来讲是不是就比较简单了,那我们就这样来处理了,那我就select一下员工信息,那我就查一下员工的ID,员工的last name和他自己的工资吧。
04:14
好from employees,然后where,我们想查的查询的呢,是这个工资呢,得大于10500,那么我们作为一个内查询出现的,那你就把刚才这个查询的这个语句放到我们这个查询的里边,诶这样一移是不是就搞定了,来选择一直行妥了,这时候呢,就都大于10500。没问题。没问题,好,这呢就是我们说的这样的一个需求啊,这样需求,那我把这句话呢,我CTRLX咱们放到这吧。啊,作为一个整体上的一个技巧来说的,行,这是我们说的这个第一道题,哎,不总结不总结,咱们还是接着来做这个题目。说返回。
05:01
赵白地与141号员工相同,Salary呢,比143号员工这个多的员工的姓名,赵白地和其工资,那这个题目的话呢,大家如果要是从里往外写,那你还是得先干什么呀?是不是先查出来141号这个员工的招白地,因为他需要是吧?然后呢,还得查出来143号员工的salary。OK,那这呢,我们就要从里往外写呢,你就把这俩事儿呢,就先补充好,那先找到他的job ID from employees,然后where。这个an employee ID呢是141是吧?好,接着查询一下这个salary from。等于lo,然后where。这个employee ID呢是143行,那我们这个题目呢,其实就改写成了什么呀,说这个返回job ID呢是ST clerk,并且呢工资比。比什么呀,比这个两千六高的员工姓名,赵白底和工资是不是就改成这样一个需求了,那这个需求呢,大家想必呢是都会写的,那我们select一下,他让查的是lastname,赵白地,还有呢,这个salary from一下employees。
06:13
对吧,然后where什么呢?那where呢叫赵白D。哎,是等于一个数,那and它的这个salary呢,是大于一个数,是不是这样的一个思路啊,那这两个括号呢,恰好就是咱们刚才写的这两个。所以呢,大家如果你要是从外往里写的话呢,那其实就是我刚才说的这个思路,先写完上边的以后呢,你再把这个呢,里边这个呢再填上对吧,好CTRLX。来这个我们再粘过来。把这个呢,我们往右移一下,这个整体来看的话,就可读性呢,能稍微的好一点点来,我们把这个呢,选中以后呢,一直行,这呢就是我们要的这个结果。逮住他。好,但你看我们现在呢,是不是拿着这个中文,我们去写这个具体这个SQL怎么写,那如果说我把这个具体的需求呢,去掉之后呢,现在你看到一个查询语句,你能不能把它再翻译成这个需求呢。
07:06
那就相当于我这儿呢,比如说理解成是中这个呢,是英的话呢,哎,你会这个汉,哎这个就别中了汉吗?你会这个汉译英,你会英译汉吗。两个方向都需要大家会。都需要大家会,那么在实际开发场景当中呢,相当于大家做的都是需求,你要能够去写这个相当于汉语英要会,但是同样的话呢,如果你拿到别人的写的这个SQ语句的,那别人这块呢,比如说你接手上一个人的这个项目当中,这个SQ语句,比如说这个数据库这块呢,查询比较慢,然后呢,你通过这个日志文件呢去分析啊,定位到具体的circleq了,然后呢,这个circle呢,拿过来以后,你看他这做的是什么需求啊,你得能够是不是叫英译汉啊。这个能力呢,大家也要有。也要有啊,这个两个方面都需要掌握,那咱们现在的话呢,更多的是这个叫汉译英是吧,OK。来第三道题。Contry。粘过来。
08:00
说返回公司,公司最少的员工的123。有同学没读懂没读懂啊,再读一遍这个公司里边工资最少的员工的信息,诶,那我们要是从里往外写的话呢,是不是先要查出来公司最少的工资是多少啊,然后看这个人是谁,对吧?这么一个思路,好,那最少的工资的话呢,这个大家应该会就面一下salary。From employees。这不就查出来公司中最少的工资嘛,是2100,那这个题目呢,就改成了说这个返回一下,或者要查询一下公司,这个公司是两千一的员工信息,这个呢题目就变得简单了,那我们就查询一下,这个叫last name。赵白帝。Salary from employees说where什么呀,说这个工资啊,是不是两千一的呀,那两千一呢,是我们这块查出来的一个情况,那把这个呢,CTRLX把它扔进去。
09:01
诶这么着,诶往这一整好,这边就查询公资呢,是两千一的,那两千一呢,就是公司的最低工资,那就查询公司当中哪些,呃,这个公司当中这个工资最少的,这个员工的信息就这样。这呢,有可能是不是多个人呢。对吧,诶注意有可能是多个人,因为里边呢,两千一的这个人呢,有可能是好几个啊就这个意思,当然你注意呢,它还是一个单行自查询,因为我们内查询里边呢,是返回的就是2100,它只有这一行数据,对吧,好的。然后接着我们来看下面这道题。这题呢,稍微有点长。啊有点长,我这儿呢,给大家再换一下行吧。看这个说呢。查询与141或174号员工的manage ID和department ID呢?相同的员工的employd和manage I和demand,诶,看着有点懵了是吧,有点懵了。查询再读一遍啊,再读一遍呢,因为这个题目比较长,看着前面呢,后边就忘了,好,那通过这一道题目呢,我给大家说一下,咱们从外往里怎么写。
10:07
因为它比较长了是吧,我们从爱往里写,大家看你看我怎么去断这个句,相当于这块呢,大家这个语文素养也得还可以。你看啊,说查询啊,这这这这这这的。其他员工,这其他其实也算是个字眼,那我再接着整。就这个,你看我这块呢,圈住在这一块,我说一下,它其实就是一个定语。来修饰我们后边这个主语的查询,我先不管想查询什么呢,查询员就你把这个去掉,查询员工的employee ID manager ID和department ID,那这个事我会,那后边这个我们选中的这一部分呢,其实就是一个这个过滤条件了,是吧,那我们就先不管它网上查询的呢,是就是这仨。诶把这仨CTRLC咱们拿过来,这个你稍微改一下这个符号,这是用的这个中文的,你改成是这个英文格式下的。好,那么查询这三个字段呢,都来自于我们的这个员工表,那就这么着写,然后接下来看一下,那么要哪些数据啊,那这里边儿提到了这个141174号员工跟他们相同的是吧?那我们这里边是不是要查出来141和174这两个员工的manage ID和department ID啊?
11:18
是这意思吧,查出来他俩的那个manage ID和department ID,行,那这个呢,我们怎么写呢,说叫where。Managed是不是应该等于等于谁的?这样写是吧,嗯,等于谁呢?我们就去select一下,叫managed,然后from一下。Employees说where where什么呢,就是employee ID,那这呢,相当于是个IN141174,诶是不是这样来写,那我们这样的话呢,就是如果呢,只是看这个查语句,相当于呢,查出来是不是这两个哥们的这个managed啊走一下。看看啊,我们这是不是写成个多行字查询了哈,或者我改一下吧。
12:04
我改一下啊,改一下就把它变得简单一点,这个我们这个毕竟多好还没讲啊,好这样说,查询的与141号这个员工。这个我这里就不改了啊,查询141号员工这个。诶,这个的manage ID和D相同的其他员工的这个信息,那这个位置呢,我就直接呢,是不是就等于这个141这就可以了,那我就计算出来141这个员工的manager ID。可以吧,好来,我们这样走一下,相当于呢,我们就看一下many是124的,并且是吧,并且也一样,好,那我们再来一个and。And,这个department ID呢?哎,也得是等于某一个。好,这个我先不加这个分号,这个里边呢,我们要查询的呢,是不是就是141这个人的一个底趴门ID了,哎,我这块呢,就把它粘过来,我稍微改一下就行。好,那我们要查的是这个department ID,你看这个啊。
13:02
那department跟这个人是一样的,好,那这个题目呢,我们是不是就查出来说这个mind是这个,然后demand是这个的,注意其他的员工相当于我们后边还得再加上一个and and什么呀,就是employee。啊,Employee ID。嗯,是不是他还得不等于咱们这个141把这个人呢,是不是还得抠出去啊,那就是这样一个思路,好,我们选中执行,那就查出来了,一共是这些。哎,一人是这些好,这个呢,就是我们做这道题的一个做法,那这道题的做法的话呢,其实嗯,这个。分析清楚以后呢,也还好是吧,哎,那么这块呢,我再讲一个方式,这我叫一个方式一啊,我再写个这个方式二,这个方式二的话呢,大家了解一下就可以,就是我们这种情况呢,建载的比较少,而且呢,相较于我们这个方式呢,也没有特别明显的说这个优化的太多啊,什么意思啊,你看咱们这里边呢,说where manage ID等于啥?然后等于这个,然后这个departmentd呢等于这个,这两个里边呢,其实除了我们这个字段不一样之外呢,其他这个过滤条件呢,你看都是141是吧,所以此种情况下呢,我们可以一次性的让他把manage ID和department呢都查出来。
14:12
都查出来,那这个呢,怎么处理呢,这就其实起个名字叫成对的一个查询,那我们这个时候呢,就where一下where manager ID。啊,然后呢,我这块逗号一下叫depart。哎,Department ID是吧,然后这个呢,让他去等于啊等于谁呢?你看哎同学说这写俩这写俩这个等号是不是有可能会误认为只是判断我们底盘买地了,那这个时候呢,我们保险起见呢,你把它加一个小括号表示呢,是整体看为一个整体,作为一个整体出现了,是吧?然后where它等于谁呢?里边呢,我这样写。我就先写到这说select。这个ID,然后department。ID,然后from这块呢,就都一样了。
15:03
R。这个呢,相当于我们就查出来141号这个员工的manage ID和这个盘ID对吧,然后我把它呢,选中以后,诶往后这块去移动。好,这时候大家看能不能看懂。此时的话呢,我们这块呢,查询的就是啊这个单位。一点这个。美观一点,稍微调一调。这么着好,你看这个呢,我们查询的就是141这个人的manager ID和这个department ID,然后呢,他跟我们这个呢,就是顺序是一致的方式呢,去做一个匹配,就是成对的一个这个查询的这种方式,来我们查询一下,那仍然呢查询呢是我们上边这个八条记录跟这个呢是一样的。这个这个里边我们没有加他是吧,你把这个呢,记得加上CTRLCL一下,把141本身它自己呢也去掉。
16:01
这就一样了。没问题是吧,好,那么这个呢,大家见到的场景呢,会比较少啊,就是这个呢,你完全不会写也没关系,那从效率上来讲的话呢,差别不太大。你要非要说有没有差别呢?有差别,因为这块呢写了两次查询,而我这呢,是不是就写了一次啊。对吧,但是呢,由于我们这个查询呢,呃,这后边我们会讲索引,它直接呢就定位掉这条数据了,其实这个效果效率呢是非常高的,就以至于说呢,都约等于可以忽略掉这里边儿这个呃这个花的这个时间,所以这两个的话呢,呃这个跟我们这个呢差别不太大。但是呢,上边这个适用性呢,比下边这个要好很多,我们这个呢,之所以能改,就是因为呢,咱们就是查这个人的,哎,只不过呢,是两个不同的字段而已,所以我们才把它合一起了,那一旦呢,这个位置你要说换一个人了,或者又加了个其他的过滤条件了,我们就一定是不能够合并在一起了。啊,所以注意一下,所以方式二呢,相较一呢,效率上就好那么一点点,但是它的这个适用的场景呢,是非常的窄的啊,所以说大家做一个了解就可以了,主要是在这个位置,那注意这个呢,咱们仍然不是多行子查询,这个你要注意咱们你看查出来的这个这个内查询的结果是不是还是只有这一行吧,所以它还是个单行加询,只不过是有两个列而已啊哎,这个大家注意一下。
17:18
成对比较的好,然后呢,我们再来看一下这个课件,这里边儿提到了叫having中的子查询。就相当于我没有查询呢,你可以写到这个having里边,那先执行子查询,然后呢再返回,这结果好,这也没什么毛病,就是没,也不算有什么新知识,只不过大家可能没有见过,那咱们就写个这个例子就见了。看一下说查询最低工资大于50号部门最低工资的部门ID和企业最低工资。读明白了没有?他说没有,哎,再看一遍啊,查询还是这个意思,你可以怎么着查询什么什么什么的。部门ID和其最低工资,那么中间我选中的这个呢,就作为定语出现啊,你就是作为过滤条件出现了,所以我先忽略掉它有查询部门ID和其最低工资好。
18:05
Select。购买的。第一。Apartment ID合起最低工资,那就是mean的一个salary,是不是这样,然后from呢?自然而然的就是员工表。好,这个别别停了啊,你看既然呢,我们查询里边出现了这个聚合函数和这个嗯,非聚合函数了,那一定是不是要加上一个格如和BY啊,这个在咱们前面讲过part的麦没问题吧。那这块呢,还算是一个比较完整的一个查询语句了,就是查询各个部门的这个最低工资吧。OK是吧,那这个工资好,然后呢,接着看说这个最低工资,我们要写这个条件了,说这个最低工资啊,它得大于52部门的最低工资。最低工资得大于某一个数,这个数呢是不确定的,最低工资大于某个数,这显然呢,因为它用总函数了,我得用having是吧,就是这个M的这个salary。就是各个部门的最低工资,他得大于谁啊,大于的是50号部门的最低工资,那这个是不确定的,我们就通过一个查询的是不是就搞定了,那我们就查询一下50号部门的。
19:08
From。Employees说where?这个这个这个什么呀,Department ID呢是50。来,我们把这个呢,往这边移一下,好大家看来,哎,这个也移一下吧。这呢就相当于我们查询出来52部门的最低工资,然后呢,看一下各个部门当中的这个最低工资,说哪一个部门的最低工资是大于52部门的这个最低工资的。就是这个意思。来,我们走一下啊,就是这些。就这些,那这里边的话呢,你看它有个no,那你如果说这个nor呢,就是我们不想要了,那这个呢,你也可以在后边呢,我们,呃,在这个位置吧,是不是在这儿加上一个where啊,就是这个department。ID。啊is,然后no,诶别加这个根号,根号加到这,这样是不是就可以了,我们这呢是11行数据油,这样一过滤,那就少掉刚才那个了。
20:07
就这些是吧,大于52部门的最低工资,这个52部门的最低工资看来还挺低的。啊,它就是两千一是吧,啊,怪不得呢,你看我们这个查询出来这个表,怎么感觉说这些部门都有呢,是吧,因为这个部门恰好是这个公司里边最低的,那比如我们换成这个叫六还60多少,64加二,我们再换一个高的吧,比如说这个110号部门啊。120。110是吧,哎,你看哪个部门的一个最高工最低工资是大于110号部门的一个最低工资呢。就只有这俩。是吧,就是这俩,那这就少了行,这个呢,就是我们发现呢,在这个having当中啊,我们有不确定的,咱们也可以去使用子查询没有问题,Having里边是可以用的。好,再接着这个题目呢,就有点儿意思了,它是在这个case当中去做的使用。Case中来,我们把它选中看看。
21:01
怎么来做?哎,这个呢更长。嗯,这个我们再给大家截一下。好,来,我们看这道问题。这个呢,结合了我们前面讲的这个叫流程控制了,说查询或者要显示员工的employd last name和location啊,这个很直接,那咱们就别读完了,直接呢,他一边说我们就这个,一边读呢,我们就一边来去实现这个last name,还有呢叫location ID吧。From看一下。嗯,和这个location。Location location这块呢,啊,这个location这块呢,是我们要要显示这个字段,还不是这个location ID,来我们看一下这块,这就这块呢,相当于它是有不确定的东西了啊看一下说这个其中。落员工的department ID与location ID为1800的department ID相同。那这个location就是Canada,其余的呢,就是USA,相当于这里边儿呢,我们是有一段有一大段一个操作,这个操作完以后呢,我们起了一个叫别名,这个别名呢,叫做这个location。
22:10
是这个意思。我这块呢,就是因为咱们这个比较长了,我就显示的加上一对双引号了,就是一看就知道这是别名的意思,然后呢,这个from我们这个字段,这个字段其实这个呢,就查好了,这俩呢,是不是来自于我们这个employees员工表是吧,那我们就先基本上就是先完成这个,然后这块呢,关键就看他怎么去写了,这个是什么情况呢?我们想看看每一个员工他的这个location多少,那这个咋写呢?看这说院弱员工的这个department ID。与location ID是1800的这个底盘相同,那我们是不是要先查出来location ID是1800的这个底盘ID啊,就是咱们一点点去剖析来查询一下这个底。Apartment。ID是吧,From这个1800,那正好我们是不是得用这个叫departments表了。
23:00
这个表,然后where呢,Location ID等于1800,这个1800的department ID看一下哦,是20,好,那这个就改成了说若员工的这个depend是20,那你就写Canada,不是20,那就写USA,那这个呢,是不是就变得简单了,那是20就这样,不是20就那样,我们是就可以用case了,Case啥呢,叫department ID。方力对吧,然后呢问。问什么呢?如果你是20,那咱们就赠,赠呢,是谁呀,要Canada?是吧,然后再问啊,这个我就也有点儿长了,咱们换上行吧。再问,哎,没有问了,其余的是不是直接就else了,Else呢,这个写的叫USA啊,就是美国,然后呢,整个我看看啊,咱们整个从这到这,这是咱们这个结构,嗯,哎,在这块先记得先加一个N对吧,按键完了以后呢,我们就可以给它起一个别名,其实这一对小框呢,我们可加可不加。
24:07
就这样,然后几个别名,这个别名呢,就是我们这个叫location行,那么这个时候呢,你要注意咱们这个20呢,是不是咱们通过一个查询得到的,那应该把这个查询呢,是不是应该放到这儿啊。哎,那这个呢,为了。哎,这个放在这儿可能还会比较难看一些了。可读性就会差一些,这个位置呢,其实写的我们给换行了,咱们放上一行吧。是不是就得这么着了?CTRLX是吧,然后这个CTRL。问一下啊,这个还是有点难看的。啊,可读性有点差,就是问这么着,然后呢,它是一个Canada啊,否则呢是一个UA啊,就这样的一个情况。来,我们把它的选中做一个执行。啊,这就出来了,那这呢,就根据每一个员工他的这个,呃,这个底department,那ID是吧,然后这块做个区分,我们说有一个员工呢,他是不是没有这个底departmentd啊,相当于个no啊,那no的话呢,它只要不是上边这个,呃,算出来这个20呢,那它就是UIC了,所以这块呢,也都能出来啊107。
25:08
哎,没问题,行,那这样的话呢,你看我们又发现呢,在这个case当中啊,原来也可以去使用咱们的哎子查询。说白了就是简单来讲就是凡是呢,你有不确定的地方啊,咱们都可以去使用这个资查询。啊,都可以去使用。那么关于我们这个单行这块呢,最后啊有两个收尾的,大家看一下,第一个呢,叫做子查询中的一个空值问题。哎,这块我们在这儿稍微标识一下。嗯,整个呢,咱们做的是这个题目,这叫4.1,这来个4.2。叫子查询的中,子查询中的这个控制问题,实际上呢,这块呢,不算是一个问题,但是这种场景呢,我们要给大家稍微的提一下来,我直接呢把这个就需求拿过来了。这个代码当中,大家来分析一下,我们这块呢,是查询出来说last name呢,是叫这个人叫这个名的,这个叫他的招白丽,然后看一下公司中哪些员工的这个招白丽跟这个人是一样的,是这意思吧,好我们选中以后呢一执行。
26:06
诶发现呢,就没有数据了,说没有数据是什么情况造成的呢?要按我们的想法来讲,你最起码呢,这个这个人他是不是应该也得能查出来呀,看他自己都没出来对吧,我们这块也没有把它去掉,所以他至少得出来,那我们查一下这个内查询发现呢,公司里边根本就没有这个人。因为没有这个人,所以我们这个照白地呢,就没有数据,相当于是个空值,然后你外查询呢,在利用这个空值的时候呢,就也没有出来数据。那这呢,其实是个空值的情况,所以不不不算是个问题啊,也就是说呢,如果我们这个内查询查完以后呢,是是个空的,它不会报错。他不会报错,那只不过呢,就是你查完以后呢,就没有结果了,哎,这个大家注意一下,所以我们说这个空值问题。然后这是一个相当于没有返回任何行,下一个呢叫非法使用子查询。
27:00
来我把这个呢放到这儿,这是4.3,这个呢是大家需要注意的问题,来这个需求呢,写好了,我们直接拿过来。看一看他怎么就非法了?这样来我们分析一下,看看能不能把这个英文呢,我们翻译成这个对应的这个中文这儿呢,我们查出来的是各个部门的,是不是最低工资啊,那很显然这块我们查出来的应该是有多行数据。然后呢,我们外边说,诶哪些员工的工资等于7000或者是四千四或者6000等等等等是吧,你看我这时候用了一个等号,这个等号呢,咱们上面提到了,它属于叫单行操作符。相当于我们后边得等于具体的一个数,那而我们现在呢,是不是查出来了多条数据啊,那1IG呢,就是我们等于的,那这些我到底是等于7000呢?哎,刚才我这写了一下。来重来一下吧,到底我应该是等于7000呢,还是应该等于四千四呢,是是都都满足呢,还是说只只选择其中一个就行了,那这块呢,我们一个等于号呢,是搞不定的,相当于这个时候我们去查询它就会报错,因为呢,你看我们这个子查询它返回了是不是多于一行的这个结果呀,啊这呢就是它的一个错误情况。
28:16
针,针对我们这个问题,它的一个错误情况。错误情况,那实际上的话呢,咱们说这儿呢,就是一个多行子查询了,所以说这块呢,我们应该应用叫多行子查询的这个操作符。啊得操作符,那其实刚才我们讲上面那道问题的时候,大家你看看这道题说呢,与这个或这个相同的,刚才呢,咱们演示的时候呢,大家是不是也发现了,我们在查的时候呢,这里边是不是就查出来了两条记录啊,那两条记录的话呢,咱们这就不能用等于了,所以你看我这块用这个in,那这个in呢,其实就是咱们下边要讲的这个多行子查询里边用的一个符号。啊,所以上边这块呢,我再讲这的时候呢,是不是把它给改了一下,咱们把这个题目呢,先改成咱们这个单行的这个场景,那多行讲完之后呢,大家你回过去再看一下这块,就刚才上面这道呃,谁获谁的这个大家也会比较清晰。
29:10
那么关于这个单行子查询啊,咱们通过几道题目呢,带着大家呢,去熟悉了熟悉,那我们就说到这儿。
我来说两句