oracle全連線處理連線字段顯示不全問題

2022-05-01 22:15:10 字數 1597 閱讀 6209

現有oracle表 a                                 表b

id  cola                       id   colb

1       1                          2       4

2       2                          3       5

3       3                          4       6

對錶a和表b全連線full join 操作 sql1:select t.id,cola,colb from (select * from a) t full join (select * from b) r on t.id=r.id

結果是  id   cola   colb

1       1

2       2         4

3       3         5

6                 由於sql1裡選擇的是t.id(就是a的id),因此全連線後連線欄位只會顯示a的id,而b的id是null       

同理如果選擇r.id(就是b的id)結果如下 a的id就是null  sql2:select r.id,cola,colb from (select * from a) t full join (select * from b) r on t.id=r.id

id   cola   colb

2       2         4

3       3         5

4                  6  

對結果表處理下即可 sql3 :   select a||b as id,cola,colb from (select t.id as a,r.id as b,cola,colb from (select * from a) t full join (select * from b) r on t.id=r.id) where a is null or b is null    union all  select a as id,cola,colb from (select t.id as a,r.id as b,cola,colb from (select * from a) t full join (select * from b) r on t.id=r.id) where a is not null and b is not null

得到將表a 表b 裡的id取別名 a b ,然後把ab列融合成1列id,即ab同時不為空的那麼取其中乙個即可,union 上ab有乙個為空的,取a||b即可

a      b   cola   colb        

1               1

2      2       2         4     

3      3       3         5

4                  6  

最後得到 

id    cola   colb        

1       1

2       2        4     

3       3        5

4                 6  

oracle 左連線 右連線 全連線

select from tab1 left join tab2 on tab1.id tab2.id 左表全部展示 select from tab1 where tab1.id tab2.id 左表全部展示,放在右表,右表為匹配表,左表全展示 select from tab1 right join ...

oracle連線查詢 內連線 外連線 全連線

oracle 中的連線可分為,內連線 inner join 外連線 outer join 全連線 full join 不光是oracle 其他很多的資料庫也都有這3 種連線查詢方式 內連線inner join 這是我們經常用的查詢方式,比如select from a,b where a.field1...

Oracle 內連線,左連線 右連線 全連線

此處用到兩張表 員工表和部門表 一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。內連線 1 等值連線 sql select emp.empno emp.ename emp.deptno,2 dept.deptno dept.loc 3from emp...