在oracle数据库中,我有2个具有相同结构的表(相同的列)。一个正在迁移到另一个。问题是我需要创建一个从2个表中读取记录的视图,这样在迁移过程中就可以读取所有记录。如果有重复记录,则只应在视图中显示表1中的记录。
表1
SELECT *
INTO #Temptbl
FROM RWSupervisor
表2
USER_ID START_DATE END_DATE
1 2015-08-12 2015-12-08
2 2015-02-25 2015-06-01
3 2015-04-14 2015-09-21
视图应包含以下数据:
USER_ID START_DATE END_DATE
2 2015-02-25 2015-06-01
4 2015-12-20 2016-01-13
这可能吗?
谢谢!
答案 0 :(得分:2)
如果你说重复记录时你的意思是所有3列是相同的,那么我不明白为什么你想要它们来自表a,因为它们是相同的。
此外,您只需创建视图:
select * from table1
union
select * from table2
将消除所有重复项,并且基本上将保留table1中的那些,因为它是第一个表(尽管没关系)
如果你坚持这样做,就像你说的那样,可能是因为不是所有的列都需要相同。
那么你需要的是一个完整的外连接
SELECT case when a.id is not null then a.id else b.id end as id,
case when a.id is not null then a.start_date else b.start_date end as start_date,
case when a.id is not null then a.end_date else b.end_date as end_Date
from table a full outer join table2 b on (a.id = b.id)
答案 1 :(得分:1)
这是我正在寻找的答案,比sagi的答案更简洁
select *
from table1
union all
select *
from table2 a
where not exists (select null from table1 where user_id = a.user_id);