网上SQL问题连载8

问题出处 http://topic.csdn.net/u/20071120/17/abf08b24-c069-4270-a4e4-4511b473b2c4.html

 

有2个表
表A:TA
字段
C1,C2,C3

a1,b1,c1
a2,b2,c2
--------------------------
表B:TB
字段(C1是表TA的外键)
C1,C4,C5

a1,d1,e1
a1,d2,e2
a2,d3,e3
a2,d4,e4
---------------------------
我现在想用一个查询语句查出下面的数据:
a1,b1,c1,null,null
null,null,null,d1,e1
null,null,null,d2,e2
a2,b2,c2,null,null
null,null,null,d3,e3
null,null,null,d4,e4

  1. WITH TA AS (  
  2.  SELECT 'A1' AS C1, 'B1' AS C2, 'C1' AS C3  
  3.    FROM DUAL  
  4.  UNION  
  5.  SELECT 'A2' AS C1, 'B2' AS C2, 'C2' AS C3 FROM DUAL  
  6. ),  
  7. TB AS (  
  8.    SELECT 'A1' AS C1, 'D1' AS C4, 'E1' AS C5  
  9.      FROM DUAL  
  10.    UNION  
  11.    SELECT 'A1' AS C1, 'D2' AS C4, 'E2' AS C5  
  12.      FROM DUAL  
  13.    UNION  
  14.    SELECT 'A2' AS C1, 'D3' AS C4, 'E3' AS C5  
  15.      FROM DUAL  
  16.    UNION  
  17.    SELECT 'A2' AS C1, 'D4' AS C4, 'E4' AS C5 FROM DUAL  
  18. )  
  19.   
  20. SELECT TA.C1, TA.C2, TA.C3, TB.C4, TB.C4  
  21.   FROM TA  
  22.   FULL JOIN TB ON TA.C2 = TB.C4  
  23.               AND TA.C3 = TB.C5  

 

外连接
left outer join 以左表为主,左表内容全显示,右表连接上的内容才显示
right outer join相反
full outer join 左右表未连接的内容全部显示

外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:

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

RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN 或 FULL OUTER JOIN。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。


LEFT OUTER JOIN 或 LEFT JOIN


RIGHT OUTER JOIN 或 RIGHT JOIN


FULL OUTER JOIN 或 FULL JOIN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值