zoukankan      html  css  js  c++  java
  • Oracle多表连接查询Join

    Left join 和right join 为外部连接,inner join 为内部连接

    Left join 左侧为主表,右侧为从表,主表会显示出所有数据,从表则只显示关联到的数据,不满足连接条件 的行数据用NULL补全

    right join 右侧为主表,左侧为从表,主表会显示出所有数据,从表则只显示关联到的数据,不满足连接条件 的行数据用NULL补全

    inner join 则只显示2张表关联条件相匹配的数据

    (1)dept(部门表)

    (2)emp(雇员表)

    1、inner join

         语法:select a.x from a inner join b on a.id=b.id;

         inner 可以省略.

    实例:

    select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
      from scott.emp a  join  scott.dept b
     on a.deptno = b.deptno ;

     结果:

    3、left outer join

    查询结果除了返回包含连接条件的行,还包含a表中不满足条件的行。其中不满足的条件行中B表的字段将被置空

     语法: select a.x form a left outer join a on a.id=b.id   outer可以省略

    实例:

     select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
      from scott.emp a left outer join  scott.dept b
     on a.deptno = b.deptno

    结果:

    当查询中出现过滤条件时:

    1)当连接条件后面有where条件时:

     select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
      from scott.emp a left outer join  scott.dept b
     on a.deptno = b.deptno where b.dname like 'SALES'

    解释:先根据连接条件a.deptno = b.deptno查询,再对查询结果按过滤条件查询。

    结果:

    2)当连接条件后面有and条件时:

     select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
      from scott.emp a left outer join  scott.dept b
     on (a.deptno = b.deptno and b.dname like 'SALES')

    解释:先对b表按过滤条件查询,再对结果执行左连接查询。

    结果:

    3 、right outer join 

    查询结果除了返回包含连接条件的行,还包含右表(b)中不满足连接条件的行,

    其中不满足连接条件的行中a表的字段值将被置为空。

    语法:select a.x from a right join a on a.id=b.id

    outer 可以省略.

    参考文档:https://www.cnblogs.com/dog2016/p/7402019.html

  • 相关阅读:
    OOP3(继承中的类作用域/构造函数与拷贝控制/继承与容器)
    OOP2(虚函数/抽象基类/访问控制与继承)
    OOP1(定义基类和派生类)
    拷贝控制3(对象移动)
    拷贝控制2(拷贝控制和资源管理/交换操作/动态内存管理)
    拷贝控制1(拷贝、赋值与销毁)
    动态内存2(动态数组)
    python--numpy模块、spicy模块、 matplotlib模块
    Java--23种设计模式之decorator模式
    Android开发---开发文档翻译
  • 原文地址:https://www.cnblogs.com/flyyingzi/p/10482975.html
Copyright © 2011-2022 走看看