zoukankan      html  css  js  c++  java
  • 多测师肖老师__子查询(7.10)

    子查询

    一、什么是子查询?

    一个查询嵌套另一个查询

    例如:

    select dept1 from dept where dept_name="iT技术"; #dept 中"iT技术"的编号103

    select sid from emp where dept2=103 #103=前面的语句
    select sid from emp where dept2=(select dept1 from dept where dept_name="iT技术" )

    二、子查询分类?

    1、标量子查询   (返回一个值)一行一列

    2、列子查询(返回一列多行)

    3、行子查询(返回一行,多列)

    4、表子查询(返回一个表)   重点

    三、详细讲解?

    1、标量子查询(返回一个值)

    标量子查询,把一个sql执行返回的一个值,作为另一个sql的条件,得到的结果是一行一列,一般出现在where之后

    例如:

    select   sid  from emp where  dept2=(select dept1 from  dept where  dept_name="iT技术" )

    备注点:标量子查询允许使用比较符号

    >,< ,=,!=,>=,=< ,<>

    2、列子查询(返回一列值)

    定义:返回的结果是一列值

    select dept1 from  dept where  dept_name="iT技术" or dept_name="财务" ;    #结果:101 ,103

    select   sid  from emp where  dept2  in (select dept1 from  dept where  dept_name="iT技术" or dept_name="财务"  )

     3、行子查询(返回一行多列)

    指子查询返回的结果是一行多列 ,一般出现在where后面

    select  age,incoming  from  emp where  name="刘十"

    select * from emp where (age,incoming) =any (select age,incoming from emp where name="刘十")

     

     

     4、表子查询(重点)

    返回的结果是一个表(多行多列),一般在from  后面

     案例1:

    案例2:

    select * from (SELECT sid,name,dept_name,dept1 from dept left join emp on dept.dept1=emp.dept2)s ,(SELECT sid,name,dept_name,dept2 from dept left join emp on dept.dept1=emp.dept2)c where s.dept1=c.dept2
    and s.dept_name= "财务"

    1.列出每个部门的平均收入及部门名称;

     2.财务部门的收入总和; 

    3.It技术部入职员工的员工号 

  • 相关阅读:
    HRBUST 1849 商品中心
    UVA 11600 Masud Rana
    Codeforces Round #580 (Div.1)
    loj 6270 数据结构板子题
    luogu P1758 [NOI2009]管道取珠
    luogu P1852 [国家集训队]跳跳棋
    51nod 2589 快速讨伐
    SICP_3.9-3.11
    SICP_3.7-3.8
    SICP_3.5-3.6
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/15705571.html
Copyright © 2011-2022 走看看