我在Materialized View中看到一个已经存在的view,里面的一段select文中有一段cross inner join的语句。这个视图在使用时没有报错。但是把这段select文拿出来执行就会报错。
select 文简化形式:
select * from tableA
cross inner join tableB第一次碰到这种情况不报错啊。
各位大大帮帮忙解释一下啊!!!
select 文简化形式:
select * from tableA
cross inner join tableB第一次碰到这种情况不报错啊。
各位大大帮帮忙解释一下啊!!!
怎么还有inner 呢
cross inner join tableB on(...)
select * from Aa left join Bb on Aa.a=Bb.a
--右:
select * from Aa right join Bb on Aa.a=Bb.a
--内
select * from Aa join Bb on Aa.a=Bb.a
--外:
select * from Aa full join Bb on Aa.a=Bb.a
--完全
select * from Aa,Bb
-- cross join
select * from Aa cross join Bbcross join 是笛卡儿乘积就是一张表的行数乘以另一张表的行数
left join 第一张表的连接列在第二张表中没有匹配是,第二张表中的值返回null
right join 第二张表的连接列在第一张表中没有匹配是,第一张表中的值返回null
full join 返回两张表中的行 left join+right join
inner join 只返回两张表连接列的匹配项
只有cross join,没有cross inner join
见
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_10002.htm#insertedID0
create materialized view VIEWA
nocache parallel 1 build immediate
using index pctfree 0
refresh on demand force disable query rewrite as select
a.row1,sum(a.row2) newrow
from tableA a
cross inner join tableB b
where a.row1=b.row1
group by a.row1
having sum(a.row2)>0这个视图里有6272条数据。
tableB表里只有一条数据。select
a.row1,sum(a.row2) newrow
from tableA a
inner join tableB b on a.row1=b.row1
group by a.row1
having sum(a.row2)>0
这个sql文检索出来6462条数据。
我想在外面重新建立这个实体化视图。所以把视图中的sql文拿出来使用。直接就报错了。
create materialized view VIEWA
nocache parallel 1
build immediate
using index pctfree 0
refresh force
with rowid
On demand
as select
a.row1,sum(a.row2) newrow
from tableA a
cross inner join tableB b
where a.row1=b.row1
group by a.row1
having sum(a.row2)>0
没见过 cross inner join