zoukankan      html  css  js  c++  java
  • 多标联查-外连接

    3)外连接
      等值连接,需要两个表的关联字段等值才将结果返回。
    如果需要将某一个表记录全部返回,即使另一个表找不到
    对等字段记录,此时可以使用外连接。
      *a.左外连接
     
      ----使用LEFT OUTER JOIN...ON...语法------
      select e.ename,e.sal,e.deptno,d.dname
      from emp e left outer join dept d
         on(e.deptno=d.deptno);
       
     A left outer join B on(...)
     以A表记录显示为主,B表记录为补充.
    当A表记录在B表找不到对等记录时,B以NULL方式补充。
     
      b.右外连接
     select e.ename,e.sal,e.deptno,d.dname
      from emp e right outer join dept d
         on(e.deptno=d.deptno);
     上面语句是以dept表显示为主,emp为补充.如果emp没有
    对等记录,字段值以NULL补充。
     
    select * from ja
     right outer join jb on(ja.id=jb.id);
    等价于
    select * from jb
     left outer join ja on(ja.id=jb.id)
     
    ----在JOIN...ON之前的外连接写法--------
    //(+)所在表为补充表,另一方是主表
    select * from ja,jb
    where ja.id(+)=jb.id; //jb为主,ja为补充
     
      c.全外连接
       全外连接=左外连接+右外链接-(重复记录)
      select * from ja
        full outer join jb on(ja.id=jb.id);
     
     //查询部门编号,部门名称,部门员工人数
      select d.deptno,
             d.dname,
             count(e.ename) num
      from DEPT d left outer join EMP e
        on(d.deptno=e.deptno)
      group by d.deptno,d.dname
      order by d.deptno;
     
     
    EMPNO ENAME DEPTNO DNAME
    ... ... 10 ...
    NULL NULL 40 ...
    NULL NULL 50 ...
    //按部门分组统计,count(*)和count(ename)的区别
    count(*) = 1
    count(ename) = 0
     
    //查询部门在NEW YORK和CHICAGO的员工编号和员工名称
    select e.empno,e.ename
    from DEPT d join EMP e on(d.deptno=e.deptno)
    where d.loc in ('NEW YORK','CHICAGO');
  • 相关阅读:
    转载 centos7安装kafka_2.11-1.0.0 新手入门(集群)
    Kafka得介绍与单节点部署
    MVC Areas
    Session如何保存在sql数据库中
    AsposeCell特定格式表格
    DataTable数据修改,换列
    A1095 Cars on Campus (30 分)
    A1075 PAT Judge (25 分)
    A1016 Phone Bills (25 分)
    A1082 Read Number in Chinese (25 分)
  • 原文地址:https://www.cnblogs.com/yunman/p/5497558.html
Copyright © 2011-2022 走看看