回答

收藏

如何使用'+'运算符在ORACLE中执行FULL OUTER JOIN?

技术问答 技术问答 504 人阅读 | 0 人回复 | 2023-09-14

代替使用FULL OUTER JOIN或FULL JOIN之类的关键字,我如何在’+’运算符的帮助下使用’where’子句执行完全外部联接?2 \/ K5 H+ K0 a
               
+ ]/ b: Z2 \2 T! h解决方案:6 N* r4 z: o$ n$ z/ U4 i
                ) E' ~6 i# T" h, n, P

7 Q5 v: a0 i( ]0 E. c/ k/ N6 p* C: {" ~/ H
                您不能(至少直接)。Oracle仅使用SQL:1999语法支持完全外部联接。7 e& z- [7 M. k4 p' h1 L! @6 j7 f
您可以通过合并两个外部联接来伪造它:
2 ^+ |+ X, q, e% _* kselect a.field1, b.field2
$ T, ?3 G# R( l; T( t; bfrom table_a a, table_b b
5 O+ M' q# }8 Y+ L' Y3 t/ Z3 r/ Bwhere a.id = b.id(+): p6 b" v1 w& t5 ]
union all
* X4 }4 b) i' V- d9 w! Bselect a.field1, b.field2! {, P# q3 K2 o0 ~# ^
from table_a a, table b b0 m. x0 O) f% f4 A& w
where a.id(+) = b.id$ a- o* ^4 S$ C' r
      and a.id is null0 _. r+ j- A% u+ L6 X
使用SQL:1999语法更具可读性:
6 K) a9 f6 U$ e! ~select a.field1, b.field27 W2 V: b; @- d. u
from table_a a full outer join table_b b
1 @" q0 Y/ p- ~( ]( Won a.id = b.id
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则