重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
应该是你的SQL语句里面有重复的列名,比如select * from user1 a,user2 b where a.id=b.id
创新互联建站是一家集网站建设,下花园企业网站建设,下花园品牌网站建设,网站定制,下花园网站建设报价,网络营销,网络优化,下花园网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
这样的话你们都有ID,创建的时候就会报错,你可以指定id取个别名,比如,select a.id aid,b.id bid from user1 a,user2 b where a.id=b.id
SELECT *
这个*号会按照你FROM后边的表翻译出表的列名。
而视图的作用类似于表,所以视图里面的列也就和表一样,是不能有重名的列。
你FROM后边有两张表,这两张表肯定会有重复的列。所以视图创建过程中,会遇到同名的列。出现错误。
你要把*号写成具体的字段,然后对于重名的列,重命名一下。
另外,你这个视图创建的,为什么两张表没有关联条件呢?
用 distinct 属性,在select之后加distinct
例:
select distinct *
from table;
select distinct name,age
from table
where 条件;
select colA,colA||to_char(rn)
from (
select colA,row_number() over (partition by colA order by colB) as rn
from table_name
) t
;hl=zh-CNnewwindow=1q=site%3Abuilder.com.cn+Oracle+%E5%85%B3%E4%BA%8E%E9%87%8D%E5%A4%8D%E5%88%97+%E5%92%8C+%E6%95%B0%E6%8D%AE%E5%90%88%E5%B9%B6+meta=
合并:把一个表中的数据合并到另一个表中去,如果数据在原表中存在做UPDATE, ... 消除重复行后会按字段的特性,做升序排列。
;hl=zh-CNnewwindow=1q=site%3Abuilder.com.cn+Oracle+%E5%85%B3%E4%BA%8E%E9%87%8D%E5%A4%8D%E5%88%97+%E5%92%8C+%E6%95%B0%E6%8D%AE%E5%90%88%E5%B9%B6+meta=
1、查出表中重复列的数据:
select a,count(*) from table group by a having count(*)1
2、查重复次数最多的列:
select a,num from (
select a,count(*) num from table group by a having count(*)1
)
order by num desc
此外,还有
1、查询一个表中所有字段都相同的记录
比如现在有一人员表 (表名:peosons)
若想将姓名、编号、住址这三个字段完全相同的记录查询出来:
select p1.* from persons p1,persons p2 where p1.name=p2.name and p1.id = p2.id and p1.address=p2.address group by p1.name,p1.id,p1.address having count(*) 1;
或者:
select p1.* from persons p1,persons p2 where p1.name=p2.name
and p1.id=p2.id and p1.address=p2.address and p1.rowidp2.rowid;
或者:(下面这条语句执行效率更高)
select * from (select p.*,row_number() over (partition by name,
id,address order by name) rn from persons p) where rn1;
2、 查询一个表中某字段相同的记录
语法:select p1.* from 表名 p1,(select 字段 from 表名 group by 字段 having count(*)1) p2 where p1.字段=p2.字段;
select p1.* from persons p1,(select address from persons group by address having count(*)1) p2
where p1.address=p2.address;
3、查询一个表中某字段相同的记录,其它字段不用查询出来
select name,count(*) from persons group by name having count(*) 1;