打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MySQL 子查询语句

子查询基本概念

子查询,是指以结果集的形式供其他查询语句使用的查询语句。这样,可以在一个完整的查询语句之中,嵌套了若干个不同功能的小查询,从而一起完成更为复杂的查询。

根据结果集的类型不同,子查询大致可以分为如下四类:

  • 单行单列子查询;
  • 单行多列子查询;
  • 多行单列子查询;
  • 多行多列子查询。

单行单列子查询

位置:select子句、where子句等可以使用一个常规值的任意子句。

select子句

功能:结果集作为一个常规值,参与字段列计算。

select ename, sal, (select avg(sal) from emp) as avg, (sal-(select avg(sal) from emp)) as balancefrom emp;

where子句

功能:结果集作为一个常规值,参与查询条件计算(算数 逻辑)。

select        ename,         sal, from        empwhere        sal > (select avg(sal) from emp);

单行多列子查询

位置:where子句。

功能:结果集作为一个复合值,参与查询条件的多个字段的判等计算。

select *from emp ewhere (e.job, e.sal) = (select job, sal from emp where ename='scott' );

多行单列子查询

位置:where子句。

功能:结果集作为一个集合值,参与查询条件的集合运算。

# in 集合运算符:必须在集合中。select        *from        empwhere        sal in (select min(sal) from emp group by deptno);
# any 集合运算符:可以不在集合中,满足任意一个比较条件。select *from empwhere sal > any(select min(sal) from emp where job='manager' group by deptno);
# all 集合运算符:可以不在集合中,必须满足所有比较条件;select        *from        empwhere        sal <> all(select min(sal) from emp where job='manager' group by deptno);
# exists 集合运算符:只检测结果集是否为空,不比较其中的元素。select *from emp ewhere exists(select * from emp);

多行多列子查询

位置:from子句。

from子句

功能:结果集作为一个临时表,进行二次查询、多表连接等运算。

# 作为临时表进行二次查询;select        *from        (select * from emp where comm is null) as emp where        job='manager';
# 作为临时表进行多表连接;select e.*, d.dname, d.loc from emp e right join (select * from dept) d on e.deptno=d.deptno;

insert子句

功能:采用【insert...select...】结构,取代【insert...values...】结构,实现从其他数据表导入数据的功能。

insert into         managerselect        *from        empwhere        job='manager';
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SQL 中having 和where的区别
oracle的子查询
oracle查询/子查询/复制表和数据
oracle子查询
ABAP中SQL的优化(转)
数据库的设计与表的管理 oracle笔记
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服