可以用oracle语句 修改查询出的视图数据么?
可以用oracle语句,将查询出来的视图里面的一个a字段的不重复数据清空么?变成图中所示的数据,保留所有其他所有数据。可以么?...
可以用oracle语句,将查询出来的视图里面的一个a字段的不重复数据清空么?变成图中所示的数据,保留所有其他所有数据。可以么?
展开
4个回答
展开全部
简单说视图是表的另一种访问结构,视图中没有实体,只是个窗口、框架。对视图的修改等于修改与视图对应的表。因此,对视图的修改要满足相应基表的完整性约束。
至于如何修改从视图中查出来的数据,要先确定使用的工具。
PL/SQL Developer或者SQL Developer都可以对查出来的记录进行修改。如果直接用SQL语句修改视图,则不能查出来修改而是用Update语句直接修改。
例如清空id=3的a值清空:update 视图名 set a='' where id=3;
至于如何修改从视图中查出来的数据,要先确定使用的工具。
PL/SQL Developer或者SQL Developer都可以对查出来的记录进行修改。如果直接用SQL语句修改视图,则不能查出来修改而是用Update语句直接修改。
例如清空id=3的a值清空:update 视图名 set a='' where id=3;
追问
使用的是PL/SQL Developer,只不过sql语句是写在程序里面的 程序调用这条语句 得到查询结果 要是用update直接修改 会对原表产生影响么,只希望查询出来的数据满足我的要求,对原表不产生影响。
展开全部
你想要的结果应该是修改视图改变查询结果吧?而不是实际物理表的数据吧?就在你视图后面
select id,case when t1.num=0 then '' else t.a end a from 表 t left join (select a ,count(id) num from 表名 group by a) t1 on t.a=t1.a
select id,case when t1.num=0 then '' else t.a end a from 表 t left join (select a ,count(id) num from 表名 group by a) t1 on t.a=t1.a
追答
可以,不过现在的规则跟你之前的有不同吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create table 表名 as select * from 视图;
update 表名 set a null where a not ni (select a from (select a ,count(id) from 表名 group by a having count(id)>1));
update 表名 set a null where a not ni (select a from (select a ,count(id) from 表名 group by a having count(id)>1));
更多追问追答
追答
建和视图一样的新表,按你要求修改字段上的数据, 这样不会影响你同事给你的那个视图
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update view set a = null where id in (select max(id) from view group by a having count(*) == 1)
更多追问追答
追答
可以。
select a.id,b,a
(select id,a from view) a left join (select id,a from view where id not in (select max(id) from view group by a having count(*) == 1)) b
这样应该就可以了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询