00:00
是第二点,第二点的话呢,我们称为叫做列子查询,当然这个列子查询我们也是放在什么后面嘞啊叫做什么小括号,哎,我说的就是是不是在Y或者having后面呀,小括号是不管什么查什么样的子查询,它都放在小括号,明白了吧,都放在小括号,我现在讲的大块呢,就是是不是都放在where for having后面呀,哎,充当条件的哈,充当条件里边我们也支持列子查询,又把列子查询称为叫做多行子查询,原因是因为列子查询的结果集是一列多行,刚才是不是一列一行啊呃,现在是一列多行啊,好吧,那么咱们先去认识一下这个里边我们说到的是不是有多行操作符啊,哎,我们先说一下这个事情啊,那么我们如果用这种多行子查询或者叫列子查询。它需要搭配多。
01:00
多行操作符来使用,那多行操作符常见的有这些,就是刚才说到的in any some或者A,当然跟in反过来,是不是就叫not in啊?我们先分别解释一下这几个操作符的使用或者说意思,咱们再去做案例啊,首先说一下in in的话,在讲模糊查询的时候是不是用过呀?哎,那是这么用的,In括号里边我们是不是放上列表值啊?我举个例子,比方说某个字段A,我们想判断它是否印,比方十逗号20,逗号30,能听懂吧,那么意思是说什么呢?我这个A的值等于十也也可以显示出来,对不对?等于20是不是也行啊,等于30是不是也行啊?哎,只要是列表中的一个是不是就行?哎,是这个意思,这是以前,那么现在呢,如果说我们要搭配上子查询,它是指我这个印小括号里边不是这种常量的列表值了,而是。
02:00
替换成谁了?替换成谁了?替换成一个查询语句了,能听懂吧,替换成一个查询语句了,只不过是说这个查询语句的结果就是这个,也就是查询句的结果是不是就是一个列表呀?啊,就是一个列表,这样说能听懂吧,就原来你这是常量,多个常量,那么现在是不是就替换成一个查询了,那这个查询的结果就是你这多个敞亮,这样说能跟上对不对,就仅此而已啊,仅此而已,其他的没啥啊,那么如果说我们用not in,那当然意思呢,跟前面也一样,那意思是说不是这里边中的某一个对不对,呃,不对,不应该说不是里边的某一个,应该是说这里边的所有的都不是,是不是都不是既不是十,也不是20,也不是30,这样说能跟上吧,啊,它这个意思啊,同样呢,也就是这个呢,替换成我们的查询语句了,替换成查询语句了啊。
03:00
好吧,这是它这个当然用的是非常多的啊,用的非常多,你看我也画上红色了啊,再看下面这个,这个用的较少,为什么用的较少呢?呃,因为它的这个意思呀,就是有点有点,怎么说呢,就跟咱们那个中文的那个,就是就容易有歧义,这样去说吧,容易有歧义,而且呢,就是可以用其他的方式代替,那要是用其他方式代替可读性更高,那咱们肯定选择是不是可读性更高了呀,哎,是这个意思啊,好,安妮和萨姆呢,它都代表任意的意思,什么意思嘞,那我这样给大家去画一下哈,我们这次说的是它,比方说你看哈某一个字段A,注意看了A大于any啊,当然萨也是一样的,我就讲any了,能明白吧,因为萨跟any意思一样,能听懂吧,我就以any为例去讲了,那括号里边同样也是放个查询语句,只不过查询的结果也是个列。
04:00
表这么说能跟上吧,所以我直接就把列表放上来,比方十二十三十好,那么A大于安妮十二十三十,它是什么意思嘞?它是说大于这个里边任意一个就行,那我问大家,如果A的值等于15,能不能查询出来,能不能查的出来能,所以说我这个子查询的话,是不是可以替换成,想一想可以替换成谁?给大家五秒钟思考,你看我说A大于an,括号里面放这个意思是说只要大于里边其中一个是不是都可以显示出来呀?那你觉得它可以替换成什么呀?是不是面呀?对,非常好啊,有人说对了啊,面,面是不是求最小值啊,既然它大于任意一个就行,那是不是?
05:00
大于最最小的那个就行,所以说你看我这个题是不是就可以替换成这条语句,就可以替换成A大于是不是面呀,啊,也就是这个里边是不是求一个最小值啊,能听懂吧就行,那你想想这个可读性是不是比这个要高,是不是比这个要高,你要是用这个的话,那你还得想这个,哎,你是啥意思对不对啊,还是比较比较不太好理解的啊,哎,这是关于它,那么再看哦哦的话叫做do是吧?啊那我也是这样去举例,比方说A大于二小括号,然后这个里边也是有个查询,最终查询的结果呢,它就是平,呃,就是相当于这个列表啊,那A大于二,它的意思是说大于这个里边所有的大于所有的,那意思是说大于最大的,假如说我A的值是15,能不能查出来,能不能查出来啊,肯定。
06:00
就不能了,因为你实物它应该是比较一下实物是不是大于它,呃,是不是大于它,是不是大于它,是不是这种感觉呀,好,那这个就是奥啊,所以说它是不是也可以替换成我们大于max啊,对不对啊,当然它没有说max这个操作符啊,我的意思是说你这套长语句里边是不是可以用上max啊啊对吧,也就是可以替换成我们的这种标量子查询去,是不是啊,可以替换成那种去了哈,那这个是哦,二和安妮呢,经常容易搞混啊,我在通过一个这个生活中的安例帮助大家去理解安妮和二了哈,啊那这个意思是什么呢?比方说咱们平时看一些武侠,武侠剧不看是吧?嗯,然后咱们去看了,咱们这个里边经常有一些场景,比方说某某人,然后他打算呢,去某一个门派,比方说是武当派去挑战去对吧,啊然后呢,一般的这个武当派这个张三峰呢,他还是比较比较那个什么的呢。
07:00
就是相对来说比较宽容对不对,哎,然后他呢,就说了,呃,你只要打赢我们这里边任意一个手下,或者是我这个这个门下的弟子,那么都算你赢了哈,啊,那么这个其实就用的安对吧,只要打赢任意一个就行,知道意思吧,那他要挑一个最不厉害的是吧,打赢了其实就行,是不是这种感觉,嗯,好,那么大于二的意思是什么呢?是说假如说对,假如说这个这个挑舌的这个人呢,他相当厉害了,对不对,那咱们就肯定不能那么说了,你打印这一个就行,是不是,假如说你必须是把这些把我们是不是都打都打趴下了呀,哎,这样才算理音,那个实际上是不是就相当于傲了呀,哎,他这个意思啊,好吧,这是跟大家去解释了一下,几个比较常见的多行比较操作符,一般的用于去用于去来去实现我们的这个多行字查询啊好,咱们通过几。
08:00
案例来跟大家去说明一下哈,嗯,那么你用这个案例去去这个学习的话,你会发现还是还是可以理解的啊,好,我们看一下案例一返回一下,我们的location ID是一千四或者1700的部门中,也就是location ID是一千四或者一千七的部门,其实应该有很多,对吧?哎,这个部门里边所有的员工姓名,你要是这么去念这个题的话,是不是就很绕呀,你需要去分步来讨论,分步来去分析,首先我们应该先查谁,你觉得你要查员工姓名,那你是不是得有个部门号啊,而部门号怎么来的,是不是要先查,先查对了,我们location ID是1400,对了,或者是一。
09:00
七的部门编号对吧?来我们查一下select department ID from应该是departments表where location ID等于一千四啊,当然这个也可以用in,对不对?哎,然后那这个地方就是一千四逗号一千七可以吧,我们先看一下这个查询结果是多列吧,是哎,错了,是啥是是单列多好吧?啊是不是就是满足我刚才说的列子查询的的这个意思呀,啊,满足它哈,那么接下来再来一步,第二步我们再去查询谁员工姓名,满足条件是要求我们的部门号是刚才一列表中的是不是某一个呀,这样说能跟上吧。
10:00
也就是相当于我们的列表值是不是就是这些呀,哎,就是这些,这个里边有没有重复的呀,大家看一下啊,没有重复的还行,假如说有重复的,那么建议大家比方说做这种题哈,有重复的我们最好要干嘛,一下去一下重,知道为什么吧,你因为我们想要的是不是就是仅仅是啊某一个值啊,哎,你要这么多,你在你要要这么多的话,你回头去筛选的时候,是不是就会怎么样啊,效率要低,那么一丢丢了呀,啊,那你的值多嘛,你现在一去充它的列表值是不是要少这么一丢丢啊,啊,它这个意思啊,最好去充好了,那么这个地方我们就去写查询员工姓名,From我们的employees where什么呢?Department ID用哪个操作符,我们前面用的大于等于这些还能行吗?不能行了,应该用in。
11:00
是应该用in吧in,哎,然后再把这个子查询怎么样放到这,这就行了吗?然后缩进一下哈,这个做完,哎这就是我们如何使用使用这种列子查询,哎其实也就是把那个大于等于是不是换成这种因来呀,哎就这个意思啊,能看明白吧,啊是它哈,哎这个是使用印的,咱们再来一个好,这个呢,经常有同学呢,就读不懂题意了,我们看一下好说下返回其他部门中比照ID为it部门中任意工资低的员工的,是不是就是不太好理解呀,哎员工号姓名赵白ID和salary先查谁。
12:00
Job ID为这个的是不是任意工资啊,啊,也就是把这个工资是不是都先查一下呀,Salary吧,Fromlos where job ID等于I pro k吧,好,当然它这个应该是很多,只是不是又是个列表呀,又是个列表,所以马上要想到,那就用in any or这些马上要想到这个能听懂吧,好了再继续,哎,这是第一步哈,第一步那么接下来我们再去看第二步啊,对,这个可以去去一下重对吧,第意思T的去一下重,那么我这个列表值数不是就少一项了啊,少一项把那个四千四千八的啊就去掉了一个好第二,那么现在呢,我们再去查询是不是这些信息呀,对了。
13:00
然后要求我们的什么呢?呃,应该是salary是吧?Salary应该是比他们要低,也就是小于任意一个,是不是要小于任意一个呀?啊,那应该是用啥安妮哎,括号里边其实就是我们一的结果我说的对吧?啊,也就是小于我们一中的啊,任意一个啊,它是这个意思,所以说那很显然就用上了我们的安了啊那知道怎么写了,Last name,员工号employee ID job ID salary,好,From我们的employees where salary,小于any是这个意思吧,小于any小括号啊,比它们里边任意一个小就行啊好了,然后呢,我们在这呢,再来一下好看一下,直行来看一下哈。
14:00
啊,当然它这个的话呢,就值会比较多,因为比里边任意一个小是不是就行呀啊啊还有一个条件,条件是说是其他部门,也就赵本D不是这个的对吧?嗯,这个其实应该这是应该是其他工种的,其他比赵本ID为什么什么部门是吧,他这个写的不对,应该是其他公主啊部部门不是是他这个题目啊,因为他这直接这不就写了嘛,Job ID为it部门嘛,所以他把这个是不是当成部了呀啊他这个意思啊,那咱们这应该是反问其他工种比这个这个这个工种是不是这种意思啊啊好,那么所以说再加一个条件,那就加一个谁了,And可以加,你就正常加就行,And job ID不等于不等于是这么。
15:00
写吧,At和Roger对吧?啊,这样的一个意思哈,这就出来了啊,这些76行是吧?好,刚才说过了小于安妮的话,我们也等加于怎么写嘞,我们可以怎样写好或者我们也可以这样去写呀,好,那么咱们说小圆你是比里边任意一个都小是吧?是比里边任任意一个都小,那应该是小于最最大的,那这应该怎么写呢?最大的还面呀,是不是max啊好,那这的话还用加any吗?不用了,是这个意思吧,哎,我们看一下结果是不是还是76行,看一下结果是不是还是70 76行执行一下是不是是,所以这就是我刚才说到的,我们使用any的话,经常也可以用其他的是不是来代替啊,嗯,就是这个意思啊。
16:00
好,那再往下,我们再来做一道题,第三案例三,那这个的话呢,是说看这个题的话呢,说的还比较清楚,跟刚才很像,但是他改了一下,把那个任一改成了所有,所以说这个时候我这个安妮就应该换成了谁,哎,我直接往这粘过来了哈,那像这种题就相当于把安妮换成了二就行了,比所有的都低,也就是比最小的都低,好,我们看一眼啊,44行吧,44行,假如说我们换成刚才说到的就是,呃,对,应该是用M对吧,那我这应该怎么写呀?哎,这个就不用了哈,这应该改成mean in salary,是这样写吧,嗯,好。
17:00
好,然后现在我们三去执行是不是还是44行啊,能看明白吧,嗯,这是跟大家分别来演示了一下in,你和二好最后提问提问一个问题,就是在最开始咱们是不是用了一个in的呀,呃,在这,哎在这个地方对不对,那你看这个能不能用any呀等等这些来代替来。最后提问一下可以吧,这怎么写什么in any,对有的同学说对了,等于any效果是一样的,等于any是不是就是相当于等于里边任意一个,是不是这个意思啊啊,等于里边任意一个啊好,那我们试一下,那我现在看一下等于any它的意思23好吧,好,那么我们再来试一下谁in啊,好,再试一下直行23号吧,嗯,能搞明白妮的意思了,对不对啊,它这个意思好再看假如说哎,再来一个进阶哈,假如说我这是not in not in是啥意思来着,就是都就是不是这个里边的是吧?啊,Not in not in的话看有多少个哈,83行挺多的是不是,我想问一下这个能。
18:27
能不能用any或者替换一下呀,Not all,一般的你根据刚才我们的讲解,是不是any和all也是得搭配的,大于小于这些啊等应该怎么写,等于不等于是吧,应该怎么写好,我们先看这个是83行,大家刚才说到的这个可以替换成谁,我这应该是听完了,有的说是不等于二对吧,不等于是不是这么写呀?啊好了,我们看一下是不是还是83号对了吧,啊,他这个意思知道了吧?啊,那这就是any all in啊整体的说完了,我们把这个填一下哈,行下个。
我来说两句