回答

收藏

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

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

此外LEFT JOIN,RIGHT JOIN和FULL JOIN适合吗?
1 u: p2 v- o7 K3 n! z                                                                ( T- g) G( v0 I3 `
    解决方案:                                                                5 M( B" }. D% j. k( ^, A, k
                                                                假设你加入了没有重复的列,这是一个非常常见的情况:" P* S' z* p& I) z$ |  G
A 和 B  的内部连接给出了  A 与 B 相交结果,即[Venn diagram]内部相交。9 X1 C! Z! b0 B% y  L
A 和 B 给出了 的外部连接A 联合 B 的结果,即[Venn diagram]联合外部。
例子
4 a* ^4 M0 q( l4 t2 B假设你有两个表,每个表都有一列,数据如下:$ u$ V3 D8 j( I
    A    B-    -1   32    43   54     6
    + f2 C+ D" P0 Q3 O2 y- E' t' P
请注意(1,2) 是 A 是独一无二的,(3,4) 是通用的,而 (5,6) 是 B 独有的。
6 k% g/ w- W1 \- x/ C" _% s7 n+ ]内部联接
' s/ R$ v1 b6 L; T使用任何等效查询的内部连接给出两个表的交集,即两行。& D/ `6 f+ R/ J9 Y) i
    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 | 43 g$ J9 d7 c  V/ n
左外连接
5 b$ [) \/ q: m给出 左外连接A 中的所有行,以及 B 所有公共银行。/ C) {0 Z' `- D% w
    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
    " R7 {% O. F! e
右外连接
( ]" D% @- \9 C1 g! J& J0 N( R* `给出 右外连接B 中的所有行,以及 A 所有公共银行。2 d" t0 G% Y3 H/ x. ]3 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 |  6
    ( u- z1 i  M, X) p5 L% t
全外连接4 o4 C2 E8 H3 b! D6 v* C6 i0 z
一个完整的外部连接会给你 A 和 B 的组合,即 A 中的所有行和 B 中的一切。A 有些内容在 B 如果 中没有相应的数据, B 部分是空的,反之亦然。, Y$ T" ?9 i6 ?( t
    select * from a FULL OUTER JOIN b on a.a = b.b; a   |  b----- -----   1 | null   2 | null   3 |    3   4  |    4null |    6null |    5+ T- J% \3 O8 b/ {8 [/ X8 S
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则