回答

收藏

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

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

此外LEFT JOIN,RIGHT JOIN和FULL JOIN适合吗?
- [  r' {/ p0 @; L& V2 u                                                                8 @& N9 i5 R) f5 U! F3 D4 h) |* v  ]
    解决方案:                                                               
* v4 L# [3 E5 l& s; D6 E                                                                假设你加入了没有重复的列,这是一个非常常见的情况:
) o$ X3 [; R2 T4 ~% aA 和 B  的内部连接给出了  A 与 B 相交结果,即[Venn diagram]内部相交。
( {. v: o5 r. w+ q3 a% q* h0 t; e# ~A 和 B 给出了 的外部连接A 联合 B 的结果,即[Venn diagram]联合外部。
例子7 a7 W9 V7 ?4 J3 L
假设你有两个表,每个表都有一列,数据如下:6 I: @, T$ Q' H3 `
    A    B-    -1   32    43   54     6
    9 r. j* U0 ~* v2 y( L5 E6 F
请注意(1,2) 是 A 是独一无二的,(3,4) 是通用的,而 (5,6) 是 B 独有的。
( a" V' F' p/ l+ M# f内部联接$ S7 |8 k, j9 }6 D* @4 @: s, w1 d3 W
使用任何等效查询的内部连接给出两个表的交集,即两行。% e& p* {; L" z- U2 w9 `
    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 | 41 j1 i& J# K0 K  A
左外连接
( d- o: p2 ^7 e! P7 [" i( l& H6 k给出 左外连接A 中的所有行,以及 B 所有公共银行。
* S* H/ i, Y+ {( d2 I8 \
    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
    " R& U& Y% t+ A7 _/ A! r. s  T, x
右外连接
5 X: X- G; h* T6 r2 U给出 右外连接B 中的所有行,以及 A 所有公共银行。% y2 u. f! M% `; I2 a+ H
    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 |  65 m) c& C/ l3 l7 ~* v2 x2 _
全外连接
% T+ N, d! e5 ?9 j一个完整的外部连接会给你 A 和 B 的组合,即 A 中的所有行和 B 中的一切。A 有些内容在 B 如果 中没有相应的数据, B 部分是空的,反之亦然。7 M; m3 Y7 O+ C) C2 b
    select * from a FULL OUTER JOIN b on a.a = b.b; a   |  b----- -----   1 | null   2 | null   3 |    3   4  |    4null |    6null |    5" e( m4 x3 U! Y5 o1 z/ D+ j/ r' P
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则