SQL中的各种Join

本文简单说明一下SQL中两张表的各种关联(不包括cross Joins和自关联),主要简单说明一下以下7种关联

  1. INNER JOIN

  2. LEFT JOIN

  3. RIGHT JOIN

  4. OUTER JOIN

  5. LEFT JOIN EXCLUDING INNER JOIN

  6. RIGHT JOIN EXCLUDING INNER JOIN

  7. OUTER JOIN EXCLUDING INNER JOIN

 

Inner JOIN

inner join应该是最简单、最易理解的一种关联,它执行查询之后,返回所有A表中同时在B表中的数据

SQL:

SELECT <select_list>
 
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key


Left JOIN

left join 不仅会返回inner join查询的结果,还会返回仅在A表中的数据(即返回A表中的全部数据)

SQL:

SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key


RIGHT JOIN

right join返回同时在A表和B表的数据,同时也会返回在B表不在A表中的数据(即返回B表的全量数据,跟left join刚好相反)

SQL:

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key


Outer JOIN

outer join,也叫full outer join或者full join,该查询会返回两张表的全量数据,跟union不同之处在于,outer join会根据关联条件做笛卡尔积,即使A、B表中关联条件不成立的记录也会返回

SQL:

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key


Left Excluding JOIN


left excluding join,该查询会返回A表所有不在B表中的记录,即只返回A且不在B表中的记录

SQL:

SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

 

Right Excluding JOIN

right excluding join,该查询会返回所有不在A表中的记录,即返回只在B表中的记录

SQL:

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL

 

Outer Excluding JOIN

outer excluding join,该查询会返回只在A表或者只在B表中的记录(即去除交集部分)

SQL:

SELECT <select_list>FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值