回答

收藏

"INNER JOIN" 和"OUTER JOIN"有什么区别?

技术问答 技术问答 65 人阅读 | 0 人回复 | 2023-09-11

此外LEFT JOIN,RIGHT JOIN和FULL JOIN适合吗?+ T, Q- m+ O: x5 U% L. F0 V& U0 B
                                                                ( _' G" Z0 H' M  Y0 E
    解决方案:                                                               
- ^1 E0 ?! W  y3 s# W                                                                假设你加入了没有重复的列,这是一个非常常见的情况:
% `5 p) c) E: d/ n' jA 和 B  的内部连接给出了  A 与 B 相交结果,即[Venn diagram]内部相交。- ?  N( A3 U# S3 \. ]
A 和 B 给出了 的外部连接A 联合 B 的结果,即[Venn diagram]联合外部。
例子
) T4 a+ G  u; ?假设你有两个表,每个表都有一列,数据如下:
, I8 a  @. k! F
    A    B-    -1   32    43   54     6
    2 g) T% d1 X/ K- y9 C
请注意(1,2) 是 A 是独一无二的,(3,4) 是通用的,而 (5,6) 是 B 独有的。
& Z/ c! q( l- w  H( c内部联接
3 V# T) T" o$ l; s3 {使用任何等效查询的内部连接给出两个表的交集,即两行。: p1 ?. Z4 l7 z  w, m- b. F( V
    select * from a INNER JOIN b on a.a = b.b;select a.*,b.*  from a,b where a.a = b.b;a | b-- --3 | 34 | 4
    0 @* q6 T$ r% r
左外连接. j9 i1 M7 q( q
给出 左外连接A 中的所有行,以及 B 所有公共银行。
/ z5 D8 e+ z. r9 P4 s
    select * from a LEFT OUTER JOIN b on a.a = b.b;select a.*,b.*  from a,b where a.a = b.b( );a |  b-- -----1 | null2 | null3 |    34 |       4
    + n8 X# F$ E( M
右外连接
; l' q( |5 x4 U给出 右外连接B 中的所有行,以及 A 所有公共银行。
9 I; |4 J' I8 q  ~
    select * from a RIGHT OUTER JOIN b on a.a = b.b;select a.*,b.*  from a,b where a.a( ) = b.b;a    |  b----- ----3    | 34    |  4null |  5null |  63 ~6 K( y  x5 `9 h$ t0 m
全外连接9 N4 Z9 y1 d! `: L& T4 M9 I
一个完整的外部连接会给你 A 和 B 的组合,即 A 中的所有行和 B 中的一切。A 有些内容在 B 如果 中没有相应的数据, B 部分是空的,反之亦然。3 s$ P6 ?4 {7 N) Y! o
    select * from a FULL OUTER JOIN b on a.a = b.b; a   |  b----- -----   1 | null   2 | null   3 |    3   4  |    4null |    6null |    5  ^0 _; E9 ^- q( F9 h( ]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则