• 肖sir__mysql之子查询语句__006


    一、子查询
    定义:一个查询嵌套另一个查询
    例如:
    题目:财务部门的收入总和;
    dept:财务部门
    incoming:工资
    (1)先将一个结果查询出来:财务部门的编号查询出来
    select dept1 from dept where dept_name=“财务”;(一个查询)
    (2)查询出来的结果作为一个条件,在查询
    select sum(incoming) from emp where dept2=(select dept1 from dept where dept_name=“财务” )

    二、子查询的分类
    1、标量子查询(返回一个值)
    标量子查询 把一个sql执行返回的一个值,作为另一sql的条件,得到的结果是一行一列,一般出现在where 之后
    select dept1 from dept where dept_name=“财务”;
    select sum(incoming) from emp where dept2=(select dept1 from dept where dept_name=“财务” )

    在这里插入图片描述
    注意点:
    标量子查询允许使用符号: =,>,<,>=,=<,<

    2、列子查询(返回一列)
    定义:返回的值是一列值,通常在where条件后使用:in ,not in

    案例:select dept1 from dept where dept_name=“财务” or dept_name=“销售” ;
    select sum(incoming) from emp where dept2 in (select dept1 from dept where dept_name=“财务” or dept_name=“销售” )group by dept2 ;
    在这里插入图片描述
    案例:求工资大于5000的部门
    select dept2 from emp where incoming>5000;

    select dept_name from dept where dept1 in (select dept2 from emp where incoming>5000)

    (3)行子查询(返回的是一行多列)
    定义:值子查询返回的结果集是一行多列,一般也是在where 后

    select incoming,dept2 from emp where name=“刘九” ;
    select * from emp where (incoming,dept2) =any( select incoming,dept2 from emp where name=“刘九” )
    在这里插入图片描述
    在这里插入图片描述
    (4)表子查询(多行多列)

    定义:子查询返回结果是一个表
    返回表,一般是在from 后,

    select * from dept INNER JOIN emp on dept.dept1=emp.dept2 ;
    select name from (
    select * from dept INNER JOIN emp on dept.dept1=emp.dept2 ) as s where dept_name=“财务” ;
    在这里插入图片描述
    注意:临时表 as 取别名,
    别名.incoming
    当出现重复字段情况处理方式:
    在这里插入图片描述
    select * from (select dept_name,emp.* from dept INNER JOIN emp on dept.dept1=emp.dept2 ) as s where s.dept_name=‘销售’

  • 相关阅读:
    指针和数组试题解析(3)字符数组部分续集
    病例演讲比赛PPT模板
    树莓派安装我的世界java版
    GIS前端编程-Leaflet插件发布
    传输层——再谈端口号
    细粒度特征提取和定位用于目标检测:PPCNN
    【ES】elasticsearch常见报错(服务端)
    神经网络系统技术是什么,神经网络系统技术应用
    Limus与Moonriver集成,为Moonriver生态带来LIT
    SAAS堡垒机安全吗?为什么性价比那么高?
  • 原文地址:https://blog.csdn.net/m0_47403059/article/details/132875002