材料: test_source, test_target ,他们的结构和数据是
SQL> select * from test_source;
NAME ID
---------- ----------
lolulz 74834
P4 74835
luo 8
P1 74832
P2 74833
zhi 8
SQL> select * from test_target;
NAME ID
---------- ----------
lulugan 12
lulugan 12
updatef 10
lolulz 74834
luo 8
P1 74832
P2 74833
zhi 8
--------------------------开始试验---------------------------
例子1
SQL> create or replace view v_target_source as
2 select test_target.*,test_source.* from test_target left outer join test_source
3 on(
4 test_target.id = test_source.id
5 )
6 with read only;
select test_target.*,test_source.* from test_target left outer join test_source
*
第 2 行出现错误:
ORA-00957: 重复的列名
----------
由于test_target和test_source中有相同的列名,而在一个view或table中不能有相同的列名
因此报错。
----------
例子2
SQL> select test_target.*,test_source.* from test_target left outer join test_source
2 on(
3 test_target.id = test_source.id
4 );
NAME ID NAME ID
---------- ---------- ---------- ----------
lolulz 74834 lolulz 74834
zhi 8 luo 8
luo 8 luo 8
P1 74832 P1 74832
P2 74833 P2 74833
zhi 8 zhi 8
luo 8 zhi 8
已选择7行。
----------
1.即使test_target和test_source中有相同的列名,但是只是普通的select出数据显示而已,对数据库没有任何影响!因此没必要报错。
2.这里的 * 是指:指定两个表各自的所有字段
----------
例子3
SQL> select * from test_target left outer join test_source
2 on(
3 test_target.id = test_source.id
4 );
NAME ID NAME ID
---------- ---------- ---------- ----------
lolulz 74834 lolulz 74834
zhi 8 luo 8
luo 8 luo 8
P1 74832 P1 74832
P2 74833 P2 74833
zhi 8 zhi 8
luo 8 zhi 8
已选择7行。
----------
这里的 * 是指:两表形成的笛卡尔积集合的所有字段
----------
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29900383/viewspace-1299874/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29900383/viewspace-1299874/