我在oracle数据库中有2个表,它们具有相同的列名和类型。 例如:
表1:id,name,comment
表2:id,name,comment
如何在一个视图中显示两个表中的所有数据?
答案 0 :(得分:2)
如果您想要4个单独的列,只需使用别名,就像使用任何其他选择一样。
create or replace view vw_my_view as
select t1.id t1_id
,t1.comment t1_comment
,t2.id t2_id
,t2.comment t2_comment
from table1 t1
inner join table2 t2 on join condition
where filter conditions
编辑当然,您的表格会以某种方式相互关联,否则您的视图单行无法表达任何意义。因此,您将有一个连接条件来连接两个表,例如t1.id = t2.id
如果您希望它们分为两列,请使用Union
create or replace view vw_my_view as
select id
,comment
from table1
union all -- use ALL unless you want to lose rows
select id
,comment
from table2;
答案 1 :(得分:0)
为什么两张相同的桌子?无论“不要重复自己”发生了什么?对不起,听起来像是一个糟糕的设计气味。
无论你创造两张桌子的灵感是什么,我敢打赌它可能是另一个属性来区分一个表中的两个组。
答案 2 :(得分:0)
SELECT * FROM TABLE1 UNION SELECT * FROM TABLE2
(如果你想要重复,则为UNION ALL)
答案 3 :(得分:0)
我同意duffymo的说法,但如果有充分理由,那么UNION会为你做这件事。 e.g。
SELECT id, name, comment FROM Table1
UNION
SELECT id, name, comment FROM Table2
答案 4 :(得分:0)
select * from table1
union
select * from table2;