Sql 从两个表中创建视图,其中一个表优先于另一个表(除一个列外,大多数情况下两个表相似)

Sql 从两个表中创建视图,其中一个表优先于另一个表(除一个列外,大多数情况下两个表相似),sql,oracle,join,view,Sql,Oracle,Join,View,从两个表中创建视图,其中一个表优先于另一个表(除一个列外,大多数情况下两个表相似) 需要来自2个表的视图 Table1 table contains below columns with values: ValueOne = C11 ValueTwo= C12 ValueThree= C13 Table2 table contains below columns (extra id column compare to table1). Id = 123 ValueOne = C11

从两个表中创建视图,其中一个表优先于另一个表(除一个列外,大多数情况下两个表相似)

需要来自2个表的视图

Table1 table contains below columns with values:
ValueOne = C11
ValueTwo= C12
ValueThree= C13

Table2 table contains below columns (extra id column compare to table1).   
Id = 123   
ValueOne = C11  
ValueTwo= V12  
ValueThree= C13
表2优先于表1。当使用ID查询时,如果ID不存在,则必须从表1中选取值。如果Id可用,则必须从表2中选取值

为此,我需要一个视图来组合这两个表,当我们从视图中查询时,我们需要得到正确的结果

example: 1) Select * from ViewName where ID=123
 then in this case I have to get below values (from table2, as the ID exist in the table2):   
 Id = 123   
ValueOne = C11   
ValueTwo= V12   
ValueThree= C13   

2) Select * from ViewName where ID=01
in this case it has to get the below values (Id and other values from Table1, 
as ID is not there in Table2:   
     Id = 01   
    ValueOne = C11    
    ValueTwo= C12   
    ValueThree= C13

您将需要使用联接。像这样的东西应该有用

    CREATE VIEW View_1 AS
    select t2.*
    from Table2 t2

    Union ALL

    Select t1.*
    from table1 t1 
    LEFT JOIN Table2 t2 on t1.ID = t2.ID 
    where t2.ID is NULL

我没有测试,但这应该给你一个好的开始

包含两个表的视图假定某种类型的联接。如果这些表之间有某种关联,这是有意义的。我看不到这两个表之间有任何关系,所以我不知道如何创建一个视图,以便它返回所需的数据。此外,ID=01来自哪里?它不存在于您的示例表中。@Littlefoot,任何其他方法都可以(而不是view,是否有任何方法可以创建它)表1中没有ID。那么,我们可以基于什么基础加入表(您在那里提到的t1.id=t2.id)?这就是您应该告诉我们的。@Littlefoot,希望我在我的问题中提到过(第二个表与第一个表类似,只有一个额外的列,即id)。@Gordon Linoff有什么帮助吗?如果您不知道如何加入这些表(顺便问一下,你没有读到我在问题下方发表的评论吗?),我们怎么知道呢?所以——在我看来——没有:你提到的还不够。