如下是员工表与部门表的表内容。

查询月薪最高的员工姓名和月薪(子查询)

select ename, sal from tb_emp
where sal = (select max(sal) from tb_emp
);
-- 如果月薪最高的员工有多个,则结果不正确。
-- select ename, sal from tb_emp order by sal desc limit 1;

查询员工的姓名和年薪((月薪+补贴)*13)
有的员工没有补贴,且值为null,因此需要对null做处理,如果值为空,则设置为0。
若直接将空值拿来运算,任何运算方式得到的都将是空值,相当于布尔值的假。

select ename, (sal + ifnull(comm, 0)) * 13 as annsal
from tb_emp order by annsal desc;

查询所有部门的名称和人数
运维部门没有员工,查询所有部门需要外连接查询。
使用where或者內连接无法查到没有员工的部门。

select dname as 部门名称, ifnull(total, 0) as 总人数
from tb_dept t1 left outer join
(select dno, count(eno) as total from tb_emp group by dno) t2
on t1.dno = t2.dno;

查询月薪最高的员工(Boss除外)的姓名和月薪
判断值是否为null,不能用等于,要用is。

select ename, sal from tb_emp
where sal = (select max(sal) from tb_emp where mgr is not null
);

查询薪水超过平均薪水的员工的姓名和月薪

select ename, sal from tb_emp where sal > (select avg(sal) from tb_emp
);

查询月薪超过其所在部门平均月薪的员工的姓名、部门编号和月薪

select ename, t1.dno, sal from tb_emp t1 inner join
(select dno, avg(sal) as avgsal from tb_emp group by dno) t2
on t1.dno = t2.dno where sal > avgsal;

查询部门中薪水最高的人姓名、月薪和所在部门名称

-- 写法一
select ename, sal, dname from tb_dept t3 inner join
(select ename, sal, t1.dno from tb_emp t1 inner join
(select dno, max(sal) as maxsal from tb_emp group by dno) t2
on t1.dno = t2.dno where sal = maxsal) t4
on t3.dno = t4.dno;
-- 写法二
select ename, sal, dname from tb_emp t1,
(select dno, max(sal) as maxsal from tb_emp group by dno) t2,
tb_dept t3 where t1.dno = t3.dno and t1.dno = t2.dno
and sal = maxsal;

查询主管的姓名和职位
distinct 和 in 都是对mysql性能影响较大的语句,可以使用存在性判断(exists)取代去重(distinct)和集合运算(in),见方法二

select ename, job from tb_emp where eno in (select distinct mgr from tb_emp where mgr is not null
);
-- 方法二
select ename, job from tb_emp t1 where exists
(select 'x' from tb_emp t2 where t1.eno=t2.mgr);

查询月薪排名4~6名的员工排名、姓名和月薪
mysql没有专门的排名方法,需要手动创建变量使其自增,
若在order by sal desc后面直接执行limit 3,3; 那么排名将会变成1,2,3

select rn, ename, sal from
(select @a:=@a+1 as rn, ename, sal
from tb_emp t1, (select @a:=0) t2
order by sal desc) t3 where rn between 4 and 6;

mysql查询进阶——员工表与部门表连接查询相关推荐

  1. 【MySQL】34道SQL综合练习详解(员工表、部门表、工资等级表)

    文章目录 一.34道SQL综合练习 二.测试使用的数据表 三.创建测试表的SQL语句 一.34道SQL综合练习 1.查询取得每个部门最高工资的人员信息. select e.ename,t.* from ...

  2. mysql员工表部门表_部门表 department 部门编号 dept_id 部门名称 汇总表

    有两张表 部门表  department  部门编号 dept_id 部门名称 dept_mement create table department( dept_id tinyint auto_in ...

  3. oracle员工表和部门表基本操作

    emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/comm 佣金/deptno 部门编号) dept 部门表(dept ...

  4. mysql 事b务 查询_MySQL进阶学习笔记二(包括连接查询、子查询、联合查询、事务、存储过程)...

    1.高级查询 (1)了解笛卡尔积:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序 ...

  5. mysql 开发进阶篇系列 23 应用层优化与查询缓存

    一.概述 前面章节介绍了很多数据库的优化措施,但在实际生产环境中,由于数据库服务器本身的性能局限,就必须要对前台的应用来进行优化,使得前台访问数据库的压力能够减到最小. 1. 使用连接池 对于访问数据 ...

  6. mysql sql 连接查询语句_Mysql——sql数据库中的连接查询

    1.1.1   交叉连接(CROSS JOIN) 交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积. 例如:下面的语句1和语句2的结果是相同的. ...

  7. mysql内连接查询原理_MySQL全面瓦解12:连接查询的原理和应用

    概述 MySQL最强大的功能之一就是能在数据检索的执行中连接(join)表.大部分的单表数据查询并不能满足我们的需求,这时候我们就需要连接一个或者多个表,并通过一些条件过滤筛选出我们需要的数据. 了解 ...

  8. mysql交叉查询教程_史上最简单的 MySQL 教程(二十六)「连接查询(上)」

    连接查询连接查询:将多张表(大于等于 2 张表)按照某个指定的条件进行数据的拼接,其最终结果记录数可能有变化,但字段数一定会增加. 连接查询的意义:在用户查询数据的时候,需要显示的数据来自多张表. 连 ...

  9. MySQL登录后显示mariadb_mysql/mariadb学习记录——连接查询(JOIN)

    //本文使用的数据表格 //persons表中id_p为主键 //orders表中id_o为主键,id_p为外键参考persons表中的id_p mysql> select * from per ...

最新文章

  1. debugger 调试的一些经验
  2. 【杭电ACM】1097 A hard puzzle
  3. python找不到reshape_如何加速Python程序
  4. ARP/代理ARP的总结
  5. HTML5学习笔记(一):HTML简介
  6. golang错误处理(实验楼)
  7. MyBatis的几个重要概念和工作流程
  8. 现在早上起来都还是感觉颈椎有些通
  9. linux操作系统字段含义,Linux系统 /etc/fstab各个字段含义解释
  10. mysql seconds_behind_master_MySQL中的seconds_behind_master的理解
  11. 操作系统学习总结(超赞!!!)
  12. c++语言表白超炫图形_R语言统计与绘图:组合图形布局
  13. 没有run窗口_使用 Terminator 在一个窗口中运行多个终端 | Linux 中国
  14. 搭建golang+vscode开发环境
  15. 拓端tecdat|matlab从ECG信号数据趋势项的消除
  16. 阿里蚂蚁金服中间件6轮面试!实拍题目和6点血泪总结!
  17. 云桌面优缺点_云桌面中VDI架构有什么优势和劣势?
  18. 数据结构试题期中期末考试【含答案】
  19. 最新WIN10系统封装教程2019系列(一)——定制母盘
  20. 金立android手机怎么截图,金立M6手机怎么截图 金立M6截屏/截图方法(两种)

热门文章

  1. 专业水平自述 计算机,研究生个人陈述范例,计算机专业.
  2. 注册表去除桌面快捷方式小箭头引起此电脑右键管理无法使用
  3. thinkpad x200 自己更换风扇的步骤和更换后的调整
  4. ucenter base.php,UCenter之应用通信分析(一)
  5. 儿童抽动症有哪些表现?
  6. 苹果CEO史蒂夫·乔布斯在斯坦福演讲(一)
  7. 数字病理切片处理---------组织学处理学习
  8. DesktopGoose的下载和使用(抖音网红桌宠鹅)【保姆级教程】
  9. 【算法讲5:乘性函数(中)】莫比乌斯函数 | 莫比乌斯反演 | 莫比乌斯反演应用
  10. 红米note1s android5,绕晕了:红米Note、红米1S各版本差异详解