JAVA培训之连接查询之子查询
创始人
2024-03-12 03:58:20
0

子查询就是嵌套查询,即SELECT语句中包含SELECT语句,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。
子查询出现的位置:

  • Where子句中,作为条件存在;
  • from后,作为表存在(多行多列)。

下面我们通过几个练习题来了解子查询,如下所示:
(1)查询emp表中,工资最高的员工的详细信息,如图1-1所示:

图1-1 查询员工信息
图1-1中,查询语句是:select * from emp where sal=MAX(sal),看上去这条sql语句没有什么问题,但是执行的时候却报错了。原因是where子句后面不能使用聚合函数,为了解决这个问题,我们可以使用子查询。
(2)首先查询出emp表中的最大工资,然后再查询工资等于最大工资的员工信息,如图1-2所示:
图1-2 子查询
图1-2中,查询语句是:select * from emp where sal=(select MAX(sal) from emp ),在where子句中嵌套了一个子查询语句。该子查询语句查询的是最大工资数。
以上子查询的位置是在where子句中,下面我们来了解子查询的位置出现在from关键字后面的情况,如下所示:
(3)查询30号部门的员工信息,如图1-3所示:
图1-3 子查询
在from后面使用子查询时,一定要为子查询指定别名,图1-3中,查询语句是:select * from (select * from emp where deptno=30) e,子查询的别名为e,可以理解为查询的结果就是一张表,然后再从这张表中查询信息。
图1-2中,子查询语句的查询结果是单行单列,图1-3中的子查询语句的查询结果是多行多列。根据子查询的查询结果有以下分类:

  • 单行单列:这样的子查询通常用来做条件,如:select * from 表1 别名1 where 列1[=,>,<,>=,<=,!=] (select 列 from 表2 别名2 where 条件);
  • 多行单列:这样的子查询通常也用来做条件,如:select * from 表1 别名1 where 列1[in,all,any] (select 列 from 表2 别名2 where 条件);
  • 单行多列:这样的子查询通常也用来做条件,如:select * from 表1 别名1 where [列1,列2,…列n] in (select 列1,列2,…列n from 表2 别名2 where 条件);
  • 多行多列:这样的子查询通常作为要查询的表,即放在from关键词后面,如:select * from 表1 别名1,(select…) 别名2 where 条件。

单行单列的子查询我们就不在演示,下面我们了解子查询的结果是多行单列的练习题,如下所示:
(4)查询大于30部门所有员工工资的员工信息,包含30部门员工,如图1-4所示:

图1-4 多行单列子查询
图1-4的查询语句是:select * from emp where sal>all(select sal from emp where deptno=30),其中子查询语句:select * from emp where deptno =30的结果是30部门所有员工的工资,是一个多行单列的结果集,查询语句的含义是大于子查询结果集中的所有的工资值,all关键字就是所有的意思,那么只要员工的工资大于30部门员工的最大工资就符合查询条件。
(5)查询大于30部门任意一个员工工资的员工信息,包含30部门员工,如图1-5所示:
图1-5 多行单列子查询
图1-5中查询语句是:select * from emp where sal>any(select sal from emp where deptno=30),子查询还是查询30部门的所有员工工资,where条件子句代表查询员工工资大于30部门员工的最小工资的员工信息,any表示任意一个。
以上是多行单列的子查询,下面我们来了解单行多列的子查询,如下所示:
(6)查询与名称为殷天正的员工的工作,部门以及工资相同的员工信息,如图1-6所示:
图1-6 单行多列子查询
图1-1中,查询语句是:select * from emp where (job,deptno,sal) in (select job,deptno,sal from emp where ename=’殷天正’),子查询是查询殷天正的工作,部门以及工资。where条件字句表示查询job,deptno以及sal同时与殷天正的工作,部门,工资相同的员工。
   当子查询的查询结果是多行多列时,我们就可以把它当成是一个表,将它放在from关键词后面,这里我们就不在进行演示。

相关内容

热门资讯

美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...