Oracle - 如何在视图上执行左连接?

sek*_*i92 0 oracle oracle11g create-view

如何使用Oracle上的左连接创建视图?

我可以使用此语句创建连接表

select * from concert_copy c left join event_copy e on c.concert_id=e.concert_id;
Run Code Online (Sandbox Code Playgroud)

但是当我使用这个语句创建视图时给了我错误"ORA-00957:重复列名"

create view concert_event as select * from concert_copy c left join event_copy e on c.concert_id=e.concert_id;
Run Code Online (Sandbox Code Playgroud)

Oli*_*bes 7

至少该concert_id列出现在两个表中.SELECT *将导致视图具有2个具有相同名称的列.解决方案:至少为其中一个表明确指定字段

create view concert_event as
    select c.*, e.eventname, ...
    from
        concert_copy c
        left join event_copy e
            on c.concert_id = e.concert_id;
Run Code Online (Sandbox Code Playgroud)

如果存在其他重复名称,请使用别名.例如,如果两个表都有一列name

select c.*, e.name as eventname, ...
Run Code Online (Sandbox Code Playgroud)

注意:如果SELECT直接调用,Oracle会自动为重复的列和表达式创建通用名称,但在视图中,要求所有列名称都可以从声明中看到,因为它们与所选列的名称匹配,或者因为给出了别名.