Oracle数据库数据修改语句

请问,我要将下面查询出来的数据中,把a.rsc_status_cd的值修改为'43',sql语句该怎么写?
select a.phone_number,b.name,c.name,a.version,d.name,a.rsc_status_cd
from rm.phone_number@gzcrm a,rm.access_number_type@gzcrm b,rm.resource_status@gzcrm c,rm.phone_number_pool@gzcrm d
where a.an_type_cd=b.an_type_cd
and a.rsc_status_cd=c.rsc_status_cd
and a.pool_id=d.pool_id
and a.area_id='8'
and a.an_type_cd='101'
and (a.phone_number like '%000'
or a.phone_number like '%111'
or a.phone_number like '%222'
or a.phone_number like '%333'
or a.phone_number like '%444'
or a.phone_number like '%555'
or a.phone_number like '%666'
or a.phone_number like '%777'
or a.phone_number like '%888'
or a.phone_number like '%999'
)
and a.rsc_status_cd in ('1')
);

把查出来的数据做一个表g,a.rsc_status_cd as rsc_status

使用update g set g.rsc_status = '43'。

使用b表数据更新a表,那么where条件是什么,也就是说,更新a表中哪些数据,用b表中的哪些数据更新,二者的关系是什么。从你的语句中我看不出b表和a表的关联。

找到关联条件后,通过关联条件查出的b表数据是否唯一,如果不唯一,还是会出现“返回值多于一行”的错误。

逻辑结构

它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同义词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。

总之,逻辑结构由逻辑存储结构(表空间,段,范围,块)和逻辑数据结构(表、视图、序列、存储过程、同义词、索引、簇和数据库链等)组成,而其中的模式对象(逻辑数据结构)和关系形成了数据库的关系设计。

以上内容参考:百度百科-Oracle数据库

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-15

oracle中修改数据用update语句。

语法:

UPDATE 表名 SET 字段='XXX' WHERE 条件;

如,数据库中,test表数据如下:

现在要将王五的名字改成王九,可用如下语句:

update test set name='王九' where name='王五';
commit;

执行后结果:

第2个回答  2011-10-31
把查出来的数据做一个表g,a.rsc_status_cd as rsc_status
使用update g set g.rsc_status = '43'追问

请具体一点,麻烦把sql写一下

追答

update (select a.phone_number,b.name,c.name,a.version,d.name,a.rsc_status_cd as rsc_status
from rm.phone_number@gzcrm a,rm.access_number_type@gzcrm b,rm.resource_status@gzcrm c,rm.phone_number_pool@gzcrm d
where a.an_type_cd=b.an_type_cd
and a.rsc_status_cd=c.rsc_status_cd
and a.pool_id=d.pool_id
and a.area_id='8'
and a.an_type_cd='101'
and (a.phone_number like '%000'
or a.phone_number like '%111'
or a.phone_number like '%222'
or a.phone_number like '%333'
or a.phone_number like '%444'
or a.phone_number like '%555'
or a.phone_number like '%666'
or a.phone_number like '%777'
or a.phone_number like '%888'
or a.phone_number like '%999'
)
and a.rsc_status_cd in ('1')
))g set g.rsc_status = '43'
这只是改查询出来的值,但没有改数据库中的值

第3个回答  推荐于2017-10-14
表 rm.phone_number@gzcrm 有没有主键?
有,如下
update rm.phone_number@gzcrm
set rsc_status_cd=43
where a.主键 in (
select a.主键 from rm.phone_number@gzcrm a,rm.access_number_type@gzcrm b,rm.resource_status@gzcrm c,rm.phone_number_pool@gzcrm d
where a.an_type_cd=b.an_type_cd
and a.rsc_status_cd=c.rsc_status_cd
and a.pool_id=d.pool_id
and a.area_id='8'
and a.an_type_cd='101'
and (a.phone_number like '%000'
or a.phone_number like '%111'
or a.phone_number like '%222'
or a.phone_number like '%333'
or a.phone_number like '%444'
or a.phone_number like '%555'
or a.phone_number like '%666'
or a.phone_number like '%777'
or a.phone_number like '%888'
or a.phone_number like '%999'
)
and a.rsc_status_cd in ('1')
)
)追问

这条语句不对

追答

錯誤提示呢?

本回答被提问者采纳
第4个回答  2011-10-31
select a.phone_number,b.name,c.name,a.version,d.name,a.rsc_status_cd
from rm.phone_number@gzcrm a,rm.access_number_type@gzcrm b,rm.resource_status@gzcrm c,rm.phone_number_pool@gzcrm d
where a.an_type_cd=b.an_type_cd
and a.rsc_status_cd='43'
and a.rsc_status_cd=c.rsc_status_cd
and a.pool_id=d.pool_id
and a.area_id='8'
and a.an_type_cd='101'
and (a.phone_number like '%000'
or a.phone_number like '%111'
or a.phone_number like '%222'
or a.phone_number like '%333'
or a.phone_number like '%444'
or a.phone_number like '%555'
or a.phone_number like '%666'
or a.phone_number like '%777'
or a.phone_number like '%888'
or a.phone_number like '%999'
)
and a.rsc_status_cd in ('1')
);
相似回答