一、多表查询时NULL值处理

  • 要求返回比"allen"工资低的所有员工

  select  a.ename,a.conn from emp a  where  a.conn  <  (select b.conn from emp b where b.ename = 'allen') ;

  • 正确的写法应该是

  select a.ename,a.conn from emp a where coalesce(a.conn,0) < (select b.conn from emp b from b.ename = 'allen');

  • 注意点

  NULL值比较结果还是NULL,所以这里需要进行NULL值的一个转化才行

二、聚集和外链接

  • 要求返回所有部门的工资和奖金

  select  e.deptno,

     sum(e.sal) as total_sal,

     sum(e.sal*eb2.rount) as total_bonus,

     from emp

     left join  (select eb.empno,

         sum(case when type =1 then 0.1

                     when type =2 then 0.2

                   when type =3 then 0.3 end ) as tote

         from emp_bonux  eb

         group by eb.empno) eb2  on eb2.empno = e.deptno

      group by e.deptno

      oder by 1;

  • 多个表返回丢失的数据用FULL JOIN

三、聚集和内连接

  • 要求返回部门为10的所有的员工的工资和奖金

  select e.deptno

       e.empno,

     e.ename,

     (e.sal * CASE  WHEN  type =1 THEN 0.1

                                WHEN  type =2 THEN 0.2

                 WHEN  type =3 THEN 0.3 end ) as  bonus

    from emp e

    inner join emp_bonus eb on eb.empno = eb.empno

    where d.deptno = 10

    order by 1,2

  如果聚合的话必须先把奖金按照员工汇总然后在进行聚集

  select e.deptno

     sum(e.sal) as total_sal,

     sum(e.sal*eb.bonus) as total_bonus

  from emp e

  inner join (select eb.empno,

       case when type =1 then 0.1

          when type =1 then 0.2

          when type =1 then 0.3 end) as bonus

      group by eb.empno) eb2  on eb2.empno = e.empno

  where e.deptno  = 10;

  group by e.deptno;

四、UNION ALL 、UNION 、和空字符串

  select  ename as  部门名称 ,denpno 部门编号, evl(mgr,deptno) as 上级编码

  NNION  ALL

  select  ename as  部门名称 ,denpno 部门编号, NULL as 上级编码 (应该用‘’空字符串)

  • 当有重复数据时必须加上唯一标识

     74990  30                                 74990  30

7521    30                                  7521    30

  7654   30                                  7654   30

  7844    30                                 7844    30

  7900    30

这两条数据坐聚合操作就会出现 OR就是有5条数据  而用 UNION就会只出现一条数据 解决办法就是加入唯一字段

  select  empno,deptno  from emp where mgr = 7684

  UNION

  select  empno,deptno  from emp where job = 'SALEMAN' 就可以保证正确的去重数据

  select disdintc deptno  from (

    select  empno,deptno  from emp where mgr = 7684

    UNION  ALL

    select  empno,deptno  from emp where job = 'SALEMAN'

    )

 order by deptno;

 

五、组合相关的行

  • 显示部门为10的员工编码、姓名、部门名称和工作地址

    select e.deptno,e.ename,e.dname,e.loc

    from emp e

      inner join dept d on (e.deptno = d.deptno)

      where e.deptno = 10

    select e.empno,e.ename,d.dname,d.loc

    from emp e,dept d

    e.deptno = d.deptno  and  e.deptno = 10

六、组合相关的行

   (LEFT   JOIN)     ( RIGHT    JOIN)         (INNER   JOIN )   ( FULL   JOIN )

  自关联可以采用 left   join进行查询

 

    

   

转载于:https://www.cnblogs.com/hanxue112253/p/9504836.html

一头扎进sql之多表操作相关推荐

  1. 放弃考研一头扎进春招,却磕得“头破血流”,这么拼值吗?

    放弃考研一头扎进春招,却磕得"头破血流",这么拼值吗? 一.在校情况 二.遇见拼客 三.相关面经 L同学-广东工业大学16级电子信息工程专业-拼客学院第20期<全栈Linux ...

  2. 一头扎进Shiro-自定义Realm

    在一头扎进Shiro-集成Web之前的博客,我们都是用shiro.ini保存用户.角色.权限信息,本篇文章我们将这些信息保存到数据库,通过自定义Realm完成身份验证和权限验证. 去掉用户.角色.权限 ...

  3. 【activityMQ】一头扎进activeMQ学习

    ActiveMQ操作: 1: 下载  ActiveMQ http://www.apache.org/index.html#projects-list   apache 所有项目列表 2: 在配置后jd ...

  4. python自动化框架2019_《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!...

    1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...

  5. 一头扎进Node系列 - 目录

    前言 本系列是属于初级教程.博主我也还只是一个node的新兵蛋子,想通过学习官网的API文档,慢慢的打好Node基础.当然后期这系列文档会慢慢完善,并且会添加一些项目实战中遇到的一些问题以及解决方案! ...

  6. 一头扎进Mysql视频教程 + 源码

    [@2015-4-8] 记录一下自己的脚印:看到一个一头扎进Mysql视频教程 + 源码果断下载下来,看了看比较到位, 下载地址:http://www.xiaomengku.com/topic?id= ...

  7. 一头扎进SpringBoot视频教程(附源码与文档)

    目录:/099 一头扎进SpringBoot视频教程(附源码与文档) ┣━━<一头扎进SpringBoot>第八讲.mp4 ┣━━<一头扎进SpringBoot>第八讲源码及文 ...

  8. 一头扎进Maven3 (一)

    本系列博客将学习Maven项目管理工具,使用Maven管理jar包 一头扎进Maven3 (一):Maven安装与配置 文档结构 Maven简介 Maven安装与配置 Maven Hello Worl ...

  9. 一头扎进Maven3 (二)

    本系列博客将学习Maven项目管理工具,使用Maven管理jar包 一头扎进Maven3 (二):在 Eclipse 中使用 Maven 文档结构 m2eclipse 插件安装 在 Eclipse 中 ...

最新文章

  1. 第二代NumPy?阿里开源超大规模矩阵计算框架Mars
  2. C++11语言新特性-《C++标准库(第二版)》读书笔记
  3. IDFT的python实现
  4. springboot+security框架整合
  5. diamond专题(一)– 简介和快速使用
  6. 林权抵押贷款政策出台 将实现林业资源变资本
  7. P2S、P2P、P2SP之对比
  8. c语言读取gps模块数据类型,GPS数据读取与处理(一)之GPS模块的数据格式
  9. java 正则表达式 tab_JAVA 正则表达式 (超详细)
  10. mysql超市管理系统怎么写_vb6.0+mysql编写的小型超市管理系统
  11. C语言既有高级语言又有低级语言的特点,但为什么它不是低级语言呢?
  12. linux v4l2架构分析之v4l2_ctrl_handler初始化及添加v4l2_ctrl的过程分析
  13. 使用Arduino开发板进行语音识别
  14. 总结:对象存储、块存储、文件存储的区别
  15. python计算多边形面积
  16. 情人节最全送礼指南、实用又好看的礼物推荐
  17. Propargyl-PEG1-SS-PEG1-PFP ester,1817735-30-0,炔基应用于生物标记
  18. 关于Opencv中Rect和Rectangle函数
  19. 企业邮箱登录,怎么登录企业邮箱更方便好用
  20. 微课中职计算机基础,微课在中职计算机基础教学中的运用探究

热门文章

  1. 每日一题(29)—— 如何引用一个已经定义过的全局变量
  2. Linux C高级编程——目录操作
  3. tablestore列式存储原理_10分钟搞透:技术人必会的MySQL体系结构与存储引擎!
  4. python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!
  5. 四、ajax请求超时与网络异常处理
  6. LeetCode 2185. 统计包含给定前缀的字符串
  7. LeetCode 2076. 处理含限制条件的好友请求(并查集)
  8. hadoop 单机伪分布式安装步骤
  9. LeetCode 1569. 将子数组重新排序得到同一个二叉查找树的方案数(DP)
  10. LeetCode 1058. 最小化舍入误差以满足目标(排序+贪心)