`

Oracle左连接与右连接区别

阅读更多

数据表的连接有: 
1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 
2、外连接: 包括 
     (1)左外连接(左边的表不加限制) 
     (2)右外连接(右边的表不加限制) 
     (3)全外连接(左右两表都不加限制) 
3、自连接(连接发生在一张基表内) 
select a.studentno, a.studentname, b.classname
      from students a, classes b
      where a.classid(+) = b.classid;
STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
            1 aa          一年级一班
            2 bb          一年级二班
                             一年级三班
以上语句是右连接:
即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在查询结构中出现。

即"(+)"表示所在的列的值,如果没有匹配的值,则加入null值,并显示出来。.

//通常将全量集合与部分集合连接时,在部分集合的列后面带上(+),以达到没有匹配时,也要显示出一个null的效果。


反之: 
select a.studentno, a.studentname, b.classname
       from students a, classes b
      where a.classid = b.classid(+);

STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
            1 aa          一年级一班
            2 bb          一年级二班
            3 aa

则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门号,这个学生的记录都会被显示。

select a.studentno, a.studentname, b.classname
       from students a, classes b
      where a.classid = b.classid;

这个则是通常用到的内连接,显示两表都符合条件的记录 
总之, 
左连接显示左边全部的和右边与左边相同的 
右连接显示右边全部的和左边与右边相同的 
内连接是只显示满足条件的!

例子:

 

select p.*,g.state  from process_card_procedure p,group_task g where p.process_card_procedure_id=g.process_card_procedure_id(+) and  p.process_card_id=431 and p.procedure_no not like '%C%' order by cast(p.procedure_no as int)

 表示process_card_procedure表和group_task表的左连接。查询结果部分如下:

 

上表中的state字段是在group_task表中,连接过程中后面三条记录没有state字段,显示为null,如果不左连接:

select p.*,g.state  from process_card_procedure p,group_task g where p.process_card_procedure_id=g.process_card_procedure_id and  p.process_card_id=431 and p.procedure_no not like '%C%' order by cast(p.procedure_no as int)

 查询结果如下:

分享到:
评论

相关推荐

    oracle 左连接 右连接学习

    右连接与左连接类似,但它返回右表中的所有记录,并将左表中的记录匹配到右表中。如果左表中没有匹配的记录,将以 null 值代替。 内连接(Inner Join) 内连接返回两个表中公共的记录,即两表中的交集。例如: ...

    Oracle 左连接、右连接

    右连接与左连接相反,它返回右表的所有记录,即使在左表中没有匹配的记录。对于左表中没有匹配的右表记录,结果集将显示为NULL。右连接在你需要保留所有右表数据,同时获取与之关联的左表数据时很有用。以同样的员工...

    Oracle左连接,右连接.doc

    ### Oracle左连接与右连接详解 #### 一、概述 在数据库操作中,表与表之间的连接是非常重要的操作之一。连接操作可以将多个表的数据整合在一起,形成更完整的信息视图。根据不同的需求,Oracle提供了多种连接方式...

    oracle数据库 左连接 右连接 自连接 。。

    右连接与左连接相反,它返回右表的所有记录,以及与之匹配的左表记录。如果左表中没有匹配的记录,结果将显示右表记录和左表的NULL值。右连接在需要确保右表所有数据都被包含时非常有用。 SQL语法示例: ```sql ...

    oracle左右连接方法

    本文将详细介绍Oracle中的左连接(Left Join)、右连接(Right Join)、内连接(Inner Join)、全连接(Full Join)以及交叉连接(Cross Join)的方法,并通过示例来帮助理解每种连接的特点。 ### 一、左连接(Left...

    SQL之左连接、右连接和全连接.doc

    本篇文章将详细讲解左连接、右连接和全连接的概念、区别和应用。 左连接(LEFT JOIN) 左连接也称为左外连接,用于从左侧表中检索记录,返回左侧表中的所有记录,并将右侧表中的匹配记录附加到左侧表中。如果右侧...

    oracle数据库表左连接右连接全连接的认识

    左连接和右连接的区别在于基准表的选择,左连接将左边的表作为基准表,全表数据都要显示,而右连接将右边的表作为基准表,全表数据都要显示。例如: `SELECT e.empno, e.ename, d.dname FROM emp e LEFT JOIN dept ...

    Oracle左右连接及一些练习资料

    "SQL语句.pdf"可能包含了更广泛的SQL语句类型,包括各种JOIN操作,如左连接、右连接、全连接和内连接,以及子查询、联接查询等。通过这些练习,你可以提升SQL编写能力,更好地处理复杂的数据关系。 "Oracle_01.pdf...

    Oracle左连接返回多条记录中一条记录的查询语句

    Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录

    sql左连接,右连接,内连接,全连接讲解

    sql左连接,右连接,内连接,全连接详细讲解

    Oracle左(外)、右(外)、全(外)、(内)连接语法与SQL标准的比较

    右(外)连接与左(外)连接相反,它返回右表的所有记录,即使在左表中没有匹配项也会返回,对于左表中没有匹配的行,其字段将显示为NULL。 ```sql SELECT * FROM A RIGHT OUTER JOIN B ON A.id = B.id; ``` #### ...

    Oracle中的几种表连接区别

    本文将详细介绍Oracle中常见的几种表连接方式及其应用场景,包括内连接(Inner Join)、外连接(Outer Join)、左连接(Left Join)、右连接(Right Join)等,并通过具体的例子来帮助理解每种连接的特点与区别。...

    数据结构左右连接

    右连接与左连接相反,它返回右表的所有记录及左表中匹配的记录。如果左表没有与右表相匹配的记录,则结果集中相应的列将显示为NULL。同样地,右连接可以通过`RIGHT JOIN`或`RIGHT OUTER JOIN`来实现。 示例中的另一...

    oracle 左右链接

    oracle中左右连接left /right join 貌似不起作用,使用(+)代替。

    ORACLE表连接方式

    右外连接与左外连接类似,但它返回的是右表的所有记录,即使在左表中没有匹配项也会返回。如果左表中没有匹配项,则结果集中的这些字段为NULL。 #### 示例 ```sql SELECT a.user_name, b.dev_no FROM user_info a ...

    理解oracle中的外连接

    右外连接与左外连接相反,返回右表的所有记录,即使在左表中没有匹配的记录。左表中没有匹配项时,结果集中的相应列将填充为NULL。这在需要查看右边数据源完整信息时很有用。 语法示例: ```sql SELECT columns ...

Global site tag (gtag.js) - Google Analytics