回答

收藏

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

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

此外LEFT JOIN,RIGHT JOIN和FULL JOIN适合吗?7 J2 F1 W3 p6 \7 D' R
                                                                6 u* y* P: `* H/ |9 {
    解决方案:                                                               
. c% W7 U4 o! t, V! L- G                                                                假设你加入了没有重复的列,这是一个非常常见的情况:
+ ]! w- A, L; O8 \- O( v- f" iA 和 B  的内部连接给出了  A 与 B 相交结果,即[Venn diagram]内部相交。
6 t: z; l% g; g: x. I: S. \+ nA 和 B 给出了 的外部连接A 联合 B 的结果,即[Venn diagram]联合外部。
例子
8 K, v; A! g9 B; j0 B  f) t7 `假设你有两个表,每个表都有一列,数据如下:
- |2 o( D" ~9 f1 H; l0 T
    A    B-    -1   32    43   54     6
    ; [7 {) a& j8 H) |, ~0 }$ o
请注意(1,2) 是 A 是独一无二的,(3,4) 是通用的,而 (5,6) 是 B 独有的。
5 [2 C0 Y3 P( A; v5 s* |+ i内部联接  A! Q7 z9 z! o+ e3 Y; Q+ u
使用任何等效查询的内部连接给出两个表的交集,即两行。  V9 e& F& b2 V5 ^
    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
    ' ?+ f8 r- m9 k7 m4 w
左外连接
( B) g1 n% [; g给出 左外连接A 中的所有行,以及 B 所有公共银行。5 w$ g' [6 K& ]0 ?5 u/ Z5 o) A
    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
    7 g9 t3 N" l* S. S- b0 ~2 H
右外连接
. X4 y. F( L: t% c, o) z: i给出 右外连接B 中的所有行,以及 A 所有公共银行。. L, @. \1 T* y& K  m. m6 l
    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 |  6
    & S/ w" D2 A- b' \7 Q( B
全外连接' y; \0 B! J" B! M2 x9 U/ h
一个完整的外部连接会给你 A 和 B 的组合,即 A 中的所有行和 B 中的一切。A 有些内容在 B 如果 中没有相应的数据, B 部分是空的,反之亦然。
7 L& F# I* r# }2 i" `. M
    select * from a FULL OUTER JOIN b on a.a = b.b; a   |  b----- -----   1 | null   2 | null   3 |    3   4  |    4null |    6null |    57 W& {3 G4 H/ y2 A9 D4 o+ _" e
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则