oracle修改数据语法。 属于联表查询进行修改来的。

updatetmp_09_graduategsetg.schoolid=c.c8900whereg.enrollschoolin(selectc.c8900fromc89... update tmp_09_graduate g
set g.schoolid = c.c8900
where g.enrollschool in (select c.c8900 from c89 c);
展开
 我来答
badkano
2015-12-26 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部

修改关联数据的方法如下。

有以下两张表:

根据test2表中的id和test1表中的id关联,修改test1表中name字段,语句如下:

update test1 a set a.name=(select b.name from test2 b where a.id=b.id) where a.id in (select id from test2);

更新后,test1表中结果:

流浪云风
2012-12-13 · TA获得超过4315个赞
知道大有可为答主
回答量:1119
采纳率:69%
帮助的人:933万
展开全部
这样写,别名太多了,去掉了一些:
UPDATE Tmp_09_Graduate g
SET g.Schoolid =
(SELECT C8900
FROM C89
WHERE C8900 = g.Enrollschool
AND Rownum = 1)
WHERE g.Enrollschool IN (SELECT C8900 FROM C89);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ct2k01
2012-12-13 · TA获得超过1570个赞
知道小有建树答主
回答量:1653
采纳率:0%
帮助的人:1108万
展开全部
不明白,这个schoolid和enrollschool难道不是同一个值?
分析一下这个语句:
where里的SELECT子句,返回的是c.c8900,条件是enrollschool在这个返回列表里,即enrollschool和某个c8900是相同的,然后你又set schoolid=c8900,那和set schoolid=enrollschool有什么差别?(假设对于某个enrollschool只有一个C8900对应哈,不然执行会报错的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hcao_sz
2012-12-13 · TA获得超过173个赞
知道答主
回答量:124
采纳率:0%
帮助的人:96.4万
展开全部
select c.c8900 from c89 c;查询的结果可能是多个值,多个值怎么可以全部赋给g.schoolid呢。
想了想,是不是可以这样做呢?
update tmp_09_graduate g
set g.schoolid = g.enrollschool
where g.enrollschool in (select c.c8900 from c89 c);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式