美文网首页MySQL数据库js css htmlSQL
Select进阶查询·子查询

Select进阶查询·子查询

作者: 技术老男孩 | 来源:发表于2023-01-28 10:14 被阅读0次

一、子查询定义:

  • 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;

相关文章

  • SQL第3/n篇(持续更新中)子查询很重要

    进阶7 子查询 含义:子查询(内查询):出现在其他语句中的select语句主查询(外查询):外部的查询语句分类...

  • Select进阶查询·子查询

    一、子查询定义: select查询命令里包含select查询命令,包涵的select 命令 放在() 里 包含的s...

  • 子查询

    进阶7:子查询 /*含义:出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询...

  • mysql子查询

    进阶7:子查询 /*含义:出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询...

  • 子查询

    出现在select语句中的select语句,称为子查询或内查询 外部的select查询语句,称为主查询或外查询 子...

  • java_sql子查询

    子查询:select语句里面嵌套select语句 子查询出现的问题:select ..(select).from....

  • DQL_子查询

    子查询 select语句中嵌套select语句,被嵌套的select语句是子查询 子查询可以出现的地方 where...

  • sqlP39-P48

    #进阶3:排序查询 /* #引入 SELECT * FROM employees 语法:执行顺序 select 查...

  • 子查询

    1 定义 :select查询语句中嵌套了select语句,嵌套的那个select查询语句就叫子查询1.1 从emp...

  • Select进阶查询·连接查询

    一、连接查询定义: 把多张表通过连接条件临时组成1张新表,在临时的新表里有连接表的所有表头和数据。 连接查询分类:...

网友评论

    本文标题:Select进阶查询·子查询

    本文链接:https://www.haomeiwen.com/subject/xsipcdtx.html