【技术篇】SQL的四种连接-左外连接、右外连接、内连接、全连接

今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果。

联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行。    
联接可分为以下几类:    

1、内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符)。包括相等联接和自然联接。     
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。   
    
2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。     
在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     

1)LEFT  JOIN或LEFT OUTER JOIN     
左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。       

2)RIGHT  JOIN 或 RIGHT  OUTER  JOIN     
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。       
3)FULL  JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。   
    
3、交叉联接   
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。    

FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。     
    
例子:   

-------------------------------------------------
  a表     id   name     b表     id   job   parent_id   
              1   张3                   1     23     1   
              2   李四                 2     34     2   
              3   王武                 3     34     4       
  a.id同parent_id   存在关系   

--------------------------------------------------    
 1) 内连接   
  select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id       
  结果是     
  1   张3                   1     23     1   
  2   李四                  2     34     2   
    
  2)左连接   
  select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id       
  结果是     
  1   张3                   1     23     1   
  2   李四                  2     34     2   
  3   王武                  null   

 

 3) 右连接   
  select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id       
  结果是     
  1   张3                   1     23     1   
  2   李四                  2     34     2   
  null                       3     34     4   
    
 4) 完全连接   
  select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   

  结果是     
  1   张3                  1     23     1   
  2   李四                 2     34     2   
  null                   3     34     4   
  3   王武                 null

 

来自:http://www.blogjava.net/zolly/archive/2007/10/23/SQLJION.html

时间: 2024-08-26 00:12:30

【技术篇】SQL的四种连接-左外连接、右外连接、内连接、全连接的相关文章

深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

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

SQL的四种连接-左外连接.右外连接.内连接.全连接 今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果.  联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行.    联接可分为以下几类:    1.内联接(典型的联接运算,使用像 =  或

SQL Server四种匹配符的含义

四种匹配符的含义 % 代表零个或者多个任意字符 代表一个任意字符 [] 指定范围内的任意单个字符 [^] 不在指定范围内的任意单个字符 带有匹配符的字符串必须使用引号引起来,例如下面的示例: LIKE 'BR%'返回以"BR"开始的任意字符串. LIKE 'Br%'返回以"Br"开始的任意字符中. LIKE '%een'返回以"een"结束的任意字符串. LIKE '%en%'返回包含"en"的任意字符串. liKE 'en'

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

今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果.   联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行.    联接可分为以下几类:     1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联

四种增加网站外链的经验分享

提高网站排名,所有的站长们几乎都知道,总结起来无非就是三方面:网站内容.网站外链.网站的代码结构.其中网站外链是最让站长们头疼的问题,每天去很多的论坛和博客发外链,但是结果却没有想象中的那么好,发布的很多外链都没有被搜索引擎收录,致使我们发布外链时保持的态度只能是"广撒网",我们网站:标准网,在最开始的时候雅虎外链的数量是700多到现在的4500,中间也是有过每天增加一二百让人激动的时刻,但是也有没有增长反而降落的时刻.特别是上周,不知道是不是因为清明放假,增加外链的工作停下,所以下降

浅析四种最有效的外链建设方法

相信站长朋友们都知道,外链对于网站权重和排名的重要性.网站如果拥有丰富的外链,那么不仅可以轻松地提高网站的权重与排名,而且可以让网站被搜索引擎的收录数量大大增加.我们既然知道了外链建设的重要性,接下来就是要清楚该如何来做外链了,下面就以我自己的经验跟大家分享下四种高效的外链建设方法,希望能给大家带来帮助. 一.友情链接 毫无疑问,友情链接是除了购买链接之外最好的链接方式(当然不包括黑链等歪门的外链).在做友情链接的时候我们也要注意一些方法和技巧,这样才能让友情链接发挥其应有的效果.首先我们要知道

SQL应用与开发:(五)多个数据表的连接

数据库中的各个表中存储着不同的数据,用户往往需要用多个表中的数据来组合.提炼出所需要的信息.如果一个查询需要对多个表进行操作,就称为连接查询.连接查询的结果集或结果表称为表之间的连接.查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系型数据库查询最主要的特征. 实现连接的结果是在向数据库增添新类型的数据方面没有限制,具有很大的灵活性.通常总是通过连接创建一个新表,以包含不同表中的数据.如果新表有合适的域,就可以将它连接到现有的表. 1.简单连接操作 最简单的连接方式是在SELECT语

SQL Server 连接中四种最常见错误

server|错误 一."SQL   Server   不存在或访问被拒绝"         这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.         一般说来,有以下几种可能性:         1,SQL   Server名称或IP地址拼写有误     2,服务器端网络配置有误     3,客户端网络配置有误         要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因.             =============   首先,检查

你真的会玩SQL吗?内连接、外连接

原文:你真的会玩SQL吗?内连接.外连接 大多数人一般写多表查询会这样写select * from tbA ,tbB  没有用到JOIN关键字,太Low了,官网标准建议是用JOIN明确表间的关系,下面具体来讲.   连接类型: 交叉联接 得到所连接表的所有组合 (笛卡儿集)cross join 内联接得到连接表的满足条件的记录组合inner join  on 外联接(左.右)得到一个表的所有行,及其余表满 足连接条件的行 full | left | right  outer join  on