`
tomotoboy
  • 浏览: 166905 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

join、left join、right join、left outer join

    博客分类:
  • SQL
阅读更多
原文地址:http://www.dwww.cn/News/2007-10/200710121751465753.shtml

通俗的讲: 

A   left    join   B   的连接的记录数与A表的记录数同 
A   right   join   B   的连接的记录数与B表的记录数同   
A   left    join   B   等价B   right   join   A    

table   A: 
Field_K,   Field_A 
1                       a 
3                       b 
4                       c    
 
table   B: 

Field_K,   Field_B 
1                       x 
2                       y 
4                       z    

select   a.Field_K,   a.Field_A,   b.Field_K,   b.Field_B 
  from   a   left   join   b   on   a.Field_K=b.Field_K 
  
  Field_K         Field_A         Field_K         Field_B         
  ----------   ----------   ----------   ----------   
  1                     a                     1                     x                   
  3                     b                     NULL               NULL 
  4                     c                     4                     z                   
  
  select   a.Field_K,   a.Field_A,   b.Field_K,   b.Field_B 
  from   a   right   join   b   on   a.Field_K=b.Field_K 
  
  Field_K         Field_A         Field_K         Field_B         
  ----------   ----------   ----------   ----------   
  1                     a                     1                     x                   
  NULL               NULL               2                     y                   
  4                     c                     4                     z       --


举个例子: 
  假设a表和b表的数据是这样的。 
  表a                          
id       name   
1          a 
2          b            
3          c 

表b                
id       stock 
1         15 
2         50 
  select   *   from   a   inner   join   b   on   a.id=b.id 
  这个语法是连接查询中的内连接,它产生的结果是 
  两个表相匹配的记录出现在结果列表中。 
  根据上面的表,出现的结果是这样的 
  a.id     name     b.id     stock 
  1       a             1         15 
  2             b             2         50 
  ---------------------------- 
  select   *   from   a,b   where   a.id=b.id 
  这个语法是内连接的另外一种写法,其执行结果与inner   join   一样 
  
  --------------------------------   
  
  select   *   from   a   left/right   join   b   on   a.id=b.id 
  这个是外连接语法中的左外连接或右外连接 
  如果是左外连接的话,它将显示a表的所有记录, 
  select   a.*,b.*   from   a   left   join   b   on   a.id=b.id 
  查询的结果是这样的: 
  a.id     name     b.id     stock 
  1         a         1             15 
  2               b         2             50 
  3               c       null         null  
  -------------------------------------------- 
  如果是右外连接的话,它将显示b表的所有记录, 
  select   a.*,b.*   from   a   right   join   b   on   a.id=b.id 
  查询的结果是这样的: 
  a.id     name     b.id     stock 
  1         a         1             15 
  2               b         2             50  
-- select   a.*,b.*   from   a   left   join   b   on   a.k   =   b.k   
  select   a.*,b.*   from   a   left   outer   join   b   on   a.k   =b.k 
  ----------上面两种一样left   join是left   outer   join的简写 
  select   a.*,b.*   from   a   left   inner   join   b   on   a.k   =   b.k   
  没有这种写法,错误的语句.
-- 在你要使用多个left   join的时候 
  比如说10个 
  我们把10个全都写成left   join的形式 
  然后再SQL让他自动运行一下,它会把最后一次出现的left   join变成left   outer   join 
  所以依此推理,最后一个left   join会以left   outer   join的形式存在 
  当然,不管变不变对结果的显示没有任何影响 
  希望我的实验能对你有所帮助  
--
分享到:
评论

相关推荐

    inner join、 left join 、right join、 outer join之间的区别

    ### inner join、left join、right join、outer join之间的区别 在数据库操作中,连接(Join)是一种非常重要的操作,用于组合两个或多个表中的数据。根据连接的方式不同,可以分为几种类型:`INNER JOIN`、`LEFT ...

    SQL中的left outer join,inner join,right outer join用法详解

    * FULL OUTER JOIN:LEFT OUTER 和 RIGHT OUTER 中所有行的超集。 内连接(Inner Join) 内连接是最常见的一种连接,它也被称为普通连接,而 E.FCodd 最早称之为自然连接。例如: SELECT * FROM t_institution i ...

    关于sql的left join,right join,inner join,outerjoin

    本篇文章将深入探讨四种基本的JOIN类型:LEFT JOIN(左连接)、RIGHT JOIN(右连接)、INNER JOIN(内连接)以及OUTER JOIN(外连接)。我们将详细解释这些概念,它们的工作原理以及在实际数据库操作中的应用。 1. ...

    Mysql之innerjoin,leftjoin,rightjoin详解.pdf

    Mysql 之 inner join、left join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner ...

    SQL语句inner join,left join ,right join连接的不同之处

    根据连接方式的不同,可以分为多种类型,包括内连接(Inner Join)、左连接(Left Join)以及右连接(Right Join)。本文将详细探讨这三种连接方式的区别,并通过具体的例子来解释它们的应用场景。 ### 内连接...

    (Left join , Right Join, Inner Join)用法详解

    ### (Left join , Right Join, Inner Join)用法详解 #### 一、基本概念与应用场景 在数据库查询语言SQL中,连接(Join)是一种非常重要的操作,它允许我们结合两个或多个表的数据来检索信息。根据不同的连接方式,...

    inner join and outer join.pdf

    - **Outer Join**(外部连接)可以分为 Left Outer Join、Right Outer Join 和 Full Outer Join。 - 这种类型的连接不仅返回满足连接条件的行,还返回一个表中所有行(对于 Left 或 Right)或两个表中所有行(对于 ...

    sql join( inner join, outer join) 分析

    接下来,我们讨论OUTER JOIN,它分为LEFT JOIN、RIGHT JOIN和FULL JOIN。OUTER JOIN的目的是返回所有匹配的行以及至少一方表中的非匹配行。 - LEFT JOIN(或LEFT OUTER JOIN)返回左表中的所有行,即使右表中没有...

    SQL left join

    在本文中,我们将详细介绍SQL Left Join的使用方法、特点和区别,以及与Right Join和Inner Join的比较。 一、SQL Left Join的定义和使用 SQL Left Join也称为左外连接,它可以将左表中的所有记录与右表中的记录...

    SQL中inner join、outer join和cross join的区别

    根据不同的连接方式,`JOIN`可以分为几种类型,包括`INNER JOIN`、`OUTER JOIN`(左外联接`LEFT JOIN`、右外联接`RIGHT JOIN`以及全外联接`FULL JOIN`)和`CROSS JOIN`。每种类型的`JOIN`都有其独特的应用场景和特点。...

    join on 语句及扩展

    3. RIGHT JOIN (或 RIGHT OUTER JOIN): 右JOIN与LEFT JOIN相反,返回右表的所有记录,即使左表中没有匹配的记录。左表中未找到匹配项的记录将用NULL填充。语法: ```sql SELECT columns FROM table1 RIGHT JOIN ...

    SQL联合查询inner join、outer join和cross join的区别详解

    这三者的区别很多人都应该不是很清楚,包括我自己,下面我们一起来看看,如果你使用join连表,缺陷的情况下是inner join,另外,开发中使用的left join和right join属于outer join,而outer join还包括full join....

    inner join-outer join-cross join查询方式总结

    根据连接方式的不同,可以分为内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN 和 FULL JOIN)以及交叉连接(CROSS JOIN)。下面我们将详细探讨每种连接方式的特点、适用场景及其具体的实现方法。 #### 内...

    SQL_left_jion与left_outer_jion区别

    SQL_left_jion与left_outer_jion的区别 SQL_left_jion和left_outer_jion是两种常见的连接查询方式,在实际开发中经常被使用。但是,许多开发者对这两者的区别并不太清楚,在实际应用中可能会导致错误的结果。下面...

    left join 过滤条件写在on后面和写在where 后面的区别

    - **RIGHT JOIN (或 RIGHT OUTER JOIN)**:除了返回两个表中匹配的行外,还会返回右表中不匹配的所有行,并将左表的列设置为NULL。 - **FULL OUTER JOIN**:返回两个表中所有匹配和不匹配的行。 #### 示例表结构 ...

    oracle-join用法

    在Oracle SQL中,Join主要分为几个类型,包括INNER JOIN、LEFT JOIN (LEFT OUTER JOIN)、RIGHT JOIN (RIGHT OUTER JOIN)以及FULL JOIN (FULL OUTER JOIN)。这些类型在Java编程中同样可以使用,通过SQL查询语句来实现...

    sql中join总结

    3. **左外JOIN (LEFT OUTER JOIN)**: 左外JOIN返回所有左侧表格(在这个例子中是`A_test`)的记录,即使右侧表格(`B_test`)没有匹配的记录。对于右侧表格中没有匹配的记录,所有字段都会填充为NULL。在示例中,`3...

    SQL中的left join right join

    SQL中的JOIN操作是数据库查询中不可或缺的部分,特别是LEFT JOIN和RIGHT JOIN,它们允许我们合并来自多个表的数据,根据特定的关联条件。以下是这些JOIN类型详细解释: 1. INNER JOIN(或简写JOIN): INNER JOIN...

    oracle中left join和right join的区别浅谈

    LEFT JOIN(也称为LEFT OUTER JOIN)和RIGHT JOIN(也称为RIGHT OUTER JOIN)是两种特殊的JOIN类型,它们在处理不匹配的数据时有不同的行为。 LEFT JOIN的核心特点是保留左表(也就是在JOIN语句中先出现的表)的...

    left-right-join.zip_join_oracle

    本主题主要聚焦于Oracle中的两种特殊连接方式:左外连接(LEFT JOIN)和右外连接(RIGHT JOIN)。通过深入理解这两种连接类型,我们可以更好地进行数据融合,获取更全面的信息。 首先,让我们从基本概念出发。在SQL...

Global site tag (gtag.js) - Google Analytics