`
409304740
  • 浏览: 21836 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

左连接与右连接理解

 
阅读更多
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
full outer join(全连接) 返回两个表中所有数据

举例如下:
--------------------------------------------
表A记录如下:
aID     aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115

表B记录如下:
bID     bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408

--------------------------------------------
1.left join
sql语句如下:
select * from A
left join B
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------
2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
--------------------------------------------
注:
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误.


分享到:
评论

相关推荐

    数据结构左右连接

    根据提供的文件信息,我们可以深入探讨数据结构中的左连接(Left Join)与右连接(Right Join),以及数据库中的授权操作。 ### 数据结构中的左连接与右连接 #### 左连接(Left Join) 左连接是一种数据库查询操作...

    SQL 连接 JOIN 例解左连接,右连接,全连接,内连接,交叉连接,自连接

    本文将详细介绍六种主要类型的 JOIN:左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)、内连接(INNER JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。通过实例讲解每种连接的特点和应用...

    SQL关于内连接,外连接(左右连接)等的总结

    右连接与左连接相反,它保留右表的所有记录。如果左表中没有匹配的记录,结果集中的相应列将填充为NULL。对于上述的员工和部门的例子,如果我们关心的是包含所有部门,即使没有员工在该部门,可以使用右连接。 ```...

    左连接和右连接

    在数据库管理与操作中,左连接(Left Join)和右连接(Right Join)是SQL查询语句中的两种重要连接类型,它们主要用于从两个或多个表中检索数据,特别是在处理复杂的数据关系时,这两种连接方式提供了灵活且强大的...

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

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

    SQL内左右自连接.doc

    右连接的语法与左连接类似,只是交换了表的位置: ```sql SELECT * FROM department RIGHT JOIN employee ON employee.deptid = department.id; ``` 这将返回所有部门的信息,包括那些没有员工的部门。 最后,全...

    oracle左右连接方法

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

    Oracle 左连接、右连接

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

    Oracle左连接,右连接.doc

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

    SQL_左外连接_右外连接_全连接_内连接

    右外连接与左外连接相反,返回右表的所有行,即使在左表中没有匹配的行。对于左表中没有匹配的行,结果集中的相应列将是NULL。 ```sql SELECT authors.*, publishers.* FROM authors RIGHT JOIN publishers ...

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

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

    SQL左外连接,右外连接,全连接,内连接四种连接的差异[参照].pdf

    右外连接与左外连接相反,它返回右表中的所有行,即使在左表中没有匹配的行。对于右表中没有匹配的行,左表的字段将填充NULL。右外连接在需要强调右表数据完整性的情况下很有用。 4. **全连接(Full Outer Join)**...

    SQL左外连接,右外连接,全连接,内连接4种连接的区别[归类].pdf

    右外连接与左外连接相反,返回右表的所有行,如果在左表中没有匹配的行,则左表的字段将为NULL。因此,当`a.id`不等于`b.parent_id`时,`a.*`列在结果中将是NULL。 4. **全连接(FULL OUTER JOIN)**: 全连接...

    数据库表连接(内外、左右连接).docx

    - 右外连接(RIGHT OUTER JOIN 或 RIGHT JOIN):与左外连接相反,返回右表的所有行,左表中没有匹配的行同样填充NULL。 - 全外连接(FULL OUTER JOIN 或 FULL JOIN):返回两个表的所有行,无论是否存在匹配。如果...

    右连接、左连接、全连接、内连接、交叉连接、自连接.pdf

    全连接结合了左连接和右连接,返回两个表中所有记录,无论是否存在匹配。如果某条记录在其中一个表中没有匹配项,结果将用NULL填充缺失的列。 4. **内连接(Inner Join 或 Join)**: 内连接是最常见的连接类型,...

    SQL 四种连接-左外连接、右外连接、内连接、全连接详解

    右外连接与左外连接相反,它返回右表的所有行,即使在左表中没有匹配的行。当右表的某行在左表中找不到匹配时,结果集中左表的列将填充NULL。在上面的例子中,如果我们将`a`表和`b`表的位置交换,右外连接将返回...

    LINQ多条件右外连接

    这段代码首先从 `_dbContext.BudgetUnit` 表开始,这是左表,然后与 `_dbContext.HRBudget` 表(右表)进行连接。连接条件是基于两个匿名对象的新建,每个对象包含 `UnitID` 和 `RoleID` 的值。这里,`unit....

    数据库中的左连接(left join)和右连接(right join)区别

    这意味着,WHERE条件只会过滤掉与指定条件不符的右表(左连接)或左表(右连接)的记录,而不影响另一侧的表。 INNER JOIN(内连接)是另一种常见的连接类型,它只返回两个表中匹配的记录。其功能等同于使用逗号(,...

    理解oracle中的外连接

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

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

    本文将深入探讨Oracle中的左(外)、右(外)、全(外)以及内连接的语法,并将其与SQL标准进行比较,以帮助读者更好地理解和应用这些关键概念。 ### 左(外)连接(Left Outer Join) #### SQL标准语法 左(外)连接返回左...

Global site tag (gtag.js) - Google Analytics