你的数据有问题,做不到一一对应:UPDATE STUDENT S
SET GRADE=(select max(G.GRADE) FROM GRADE G WHERE S.ID=G.ID)
where exists(select G.GRADE FROM GRADE G WHERE S.ID=G.ID);
SET GRADE=(select max(G.GRADE) FROM GRADE G WHERE S.ID=G.ID)
where exists(select G.GRADE FROM GRADE G WHERE S.ID=G.ID);
解决方案 »
- rman备份数据库的备份集在哪里?
- 请求个存贮过程
- oo4o批量导入的问题(C++)
- 关于PL/SQL与iSQL PLUS查询时出现方框与问号的问题
- (急)如何对一个对象的一个字段插入一个序列的值?
- 问个比较变态的问题
- Oracle8i启动后,例程启动,但是数据库没有启动
- 用 blob 字段的数据表应该注意什么,我现在向该字段插入一个 50M 的 Word 文档就报错,说“无法通过128(在表空间STAM中)扩展”
- 在redhat7.2下内核不同对oracle8i有什么影响?LD_ASSUME_KERNEL设置不同,为什么会产生不同结果
- Oracle 普通用户密码限制修改
- 怎样察看arch log file中的sql语句??????
- 在windows2000下安装oracle8i,每次重启windows后就不能用了,请问如何解决?
student a
set
grade=(select max(grade) from grade b where a.id=b.id)
where
exists (select 1 from grade b where a.id=b.id);
谢谢回答,结果正确。
但是,请问bzszp(SongZip):
我的数据有什么问题呢?这样的要求也不过分啊。问题是解决了,不知道这是不是唯一的办法?(这个要求有点过分了,呵呵)
因此按照ID对应做update时出现了问题。查ID重复的数据:select ID FROM GRADE G
group by ID having count(*)>1;
SET GRADE=(select G.GRADE FROM GRADE G WHERE S.ID=G.ID)
where exists(select G.GRADE FROM GRADE G WHERE S.ID=G.ID);
就是正确答案。是我不小心,在GRADE中插入了多条数据。谢谢。