当前位置:
首页
文章
数据库
详情

Select进阶查询·子查询

一、子查询定义:

  • select查询命令里包含select查询命令,包涵的select 命令 放在() 里
  • 包含的select查询命令可以在↓
    where 命令之后having命令之后from命令之后select命令之后

二、命令格式:

Where命令之后:

SELECT 表头名列表 FROM 库.表 WHERE 表头名 判断符号 (SELECT查询命令)

Having命令之后:

SELECT 表头名列表 FROM 库.表 WHERE 筛选条件 HAVING 判断符号 (SELECT查询命令)

From命令之后:

SELECT 表头名列表 FROM (SELECT查询命令) WHERE 筛选条件;

Select命令之后:

SELECT 表头名列表 (SELECT查询命令) FROM 库.表 WHERE 筛选条件;

三、使用案例:

where 命令之后:
  • 查询人事部和财务部员工信息
# 先查看人事部和财务部的 部门id
mysql> select dept_id from departments  
where dept_name in ('人事部', '财务部');
      
# 再查询人事部和财务部员工信息
mysql> select dept_id , name  from employees 
where dept_id in ( 
  select dept_id from departments  
  where dept_name in ('人事部', '财务部') 
);
  • 查询2018年12月所有比100号员工基本工资高的工资信息
# 先把100号员工的基本工资查出来
mysql> select basic from salary  
where year(date)=2018 
and 
month(date)=12 and employee_id=100;  

# 再查看比100号员工工资高的
mysql> select  *  from salary 
where year(date)=2018 and month(date)=12 
and 
basic  >  (
  select basic from salary 
  where year(date)=2018 
  and 
  month(date)=12 and employee_id=100
);
having 命令之后:
  • 查询部门员工总人数比开发部总人数少的部门名称和人数
# 统计开发部 员工总人数
mysql> select count(*) from employees 
where dept_id = (
  select dept_id from departments 
  where dept_name="开发部"
);

# 统计每个部门总人数 
mysql> select dept_id,count(name) from employees
group by dept_id;

# 输出总人数比开发部总人数少的部门名及总人数 
mysql> select dept_id,count(name) as total from employees 
group by dept_id 
having total < (
  select count(name) from employees  
  where dept_id=(
    select dept_id from departments 
    where dept_name='开发部'
  )
);
from 命令之后:
  • 查询3号部门 、部门名称 及其部门内 员工的编号、名字 和 email
mysql> select dept_id,dept_name,employee_id,name,email 
from (
  select d.dept_name,e.* from departments as d 
  inner join employees as e 
  on 
  d.dept_id=e.dept_id 
) as tmp_table 
where dept_id=3;
select 命令之后:
  • 查询每个部门的人数
#显示部门表中的所有列表
mysql> select d.*  from departments as d;   

#查询每个部门的人数
mysql> select  d.*,(
  select count(name) from employees as e  
  where d.dept_id=e.dept_id
) as 总人数 from departments as d;

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。