2 luoyg1004 luoyg1004 于 2014.07.23 21:04 提问

跪求:oracle如何在数据分组后更新(update)?求大神指导啊~~~万分感谢

如题:org_info 表内容如下:
ID NAME TEL ADDR OP_TYPE OCCUR_DATE
1001 aaa 888888 ppppppp 2014-07-23
1001 aaa 999999 ppppppp 2011-03-19
1002 bbb 666666 yyyyyyy 2014-09-15
1002 ipow 221 fghfghfh 2009-07-08
1002 ipow 221 iyyiwqwe 2006-02-24
1002 bbb 666666 yyyyyyy 2001-05-12

update (select row_number() over(partition by id order by occur_date ASC) RN,
oi.* from org_info oi) aa
set aa.op_type = 1 where aa.RN = 1
数据库报错:
ORA-01732: 此视图的数据操纵操作非法

请问这为什么错?如果不能这样写,那么用什么方式还能实现此功能呢?谢谢~~~~
(希望实现按照ID分组,取出日期最小的那条记录,将他字段OP_TYPE更新为1,求指导啊~~~)

2个回答

luoyg1004
luoyg1004   2014.07.26 14:02
已采纳

update org_info set op_type = 1 where rowid in (
select rid
from (select rowid rid,
row_number() over(partition by id order by occur_date ASC) RN
from org_info oi)
where rn = 1
)

sloder
sloder   2016.05.18 09:07

如果是关联更新怎么处理? @luoyg1004
当然效率要高

Csdn user default icon
上传中...
上传图片
插入图片