从表2中取查出的第二条记录更新表1字段

乾K大挪移 软件工程师  2013-04-24 08:34:26

-- 表1.BBB与表2.CCC为关联字段,根据关联字段从表2查出N条记录,取第二条记录Update表1.AAA字段
-- 此SQL运行至where b.CCC = 表1.BBB 报错,无法识别表1.BBB。
update 表1
set 表1.AAA =
(select b2.DDD
from (select b.*, rownum as brn
from 表2 b
where b.CCC = 表1.BBB
and rownum < 3) b2
where b2.brn > 1);

怎么实现?
多谢!
...全文
152 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
乾K大挪移 2013-05-07
后来我使用了存储过程解决这一问题
回复
hh7yx 2013-04-24
merge into 表1 t1 using (select ccc, ddd from (select ccc, ddd, rownum rn from 表2 where rownum < 3) where rn > 1) t2 on (t1.bbb = t2.ccc) when matched then update set t1.aaa = t2.ddd;
回复
陈字文 2013-04-24
引用 楼主 bkinside 的回复:
SQL code?12345678910-- 表1.BBB与表2.CCC为关联字段,根据关联字段从表2查出N条记录,取第二条记录Update表1.AAA字段-- 此SQL运行至where b.CCC = 表1.BBB 报错,无法识别表1.BBB。update 表1 set 表1.AAA = (select b2.DDD from (se……
没有看明白你 rownum < 3 的逻辑是什么..为什么呢?
回复
ben20062143 2013-04-24
merge可以
回复
陈字文 2013-04-24
引用 3 楼 bkinside 的回复:
引用 1 楼 ziwen00 的回复:引用 楼主 bkinside 的回复:SQL code?12345678910-- 表1.BBB与表2.CCC为关联字段,根据关联字段从表2查出N条记录,取第二条记录Update表1.AAA字段-- 此SQL运行至where b.CCC = 表1.BBB 报错,无法识别表1.BBB。update 表1 set 表1.AAA = ……
恩,使用merge也是一个好的方法.
回复
乾K大挪移 2013-04-24
引用 1 楼 ziwen00 的回复:
引用 楼主 bkinside 的回复:SQL code?12345678910-- 表1.BBB与表2.CCC为关联字段,根据关联字段从表2查出N条记录,取第二条记录Update表1.AAA字段-- 此SQL运行至where b.CCC = 表1.BBB 报错,无法识别表1.BBB。update 表1 set 表1.AAA = (select b2.DD……
为了取查询出来的第二条数据,用的是rownum>1 然后再 rownum<3
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-04-24 08:34
社区公告
暂无公告