ORACLE 联接表 [重复]

Posted

技术标签:

【中文标题】ORACLE 联接表 [重复]【英文标题】:ORACLE JOIN TABLES [duplicate] 【发布时间】:2016-08-23 05:48:41 【问题描述】:

我有

T1: USER_ID OSX
       1     Y
       2     Y  

T2: USER_ID android
       1     Y
       3     Y  

我想按如下方式加入表格,但我不知道如何

T3: USER_ID ANDROID  OSX
       1     Y        Y
       2     null     Y
       3     Y        null

【问题讨论】:

【参考方案1】:

使用full join,更好地处理空值:

select coalesce(t1.user_id, t2.user_id) as user_id,
       coalesce(t2.android,'N/A') as android,
       coalesce(t1.osx,'N/A') as osx
from t1
full join t2 on t1.user_id = t2.user_id

【讨论】:

nullnull,为什么要在数据库层使用 dummy-value 'N/A'?!【参考方案2】:

你想要一个full outer join

select coalesce(t1.user_id, t2.user_id) as user_id,
       t2.android, t1.osx
from t1 full join
     t2
     on t1.user_id = t2.user_id;

【讨论】:

以上是关于ORACLE 联接表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用消除重复的联接从另一个表中插入一个表[重复]

Google BigQuery:具有重复名称的联接表的所有列的前缀

使用内部联接删除一行数据[重复]

具有内部联接的重复列

oracle之如何删除表中的重复记录只保留其中一条

添加内部联接使查询显示重复