标题: 如何实现查找最大值并update! [打印本页] 作者: elei1151 时间: 2006-04-12 00:00 标题: 如何实现查找最大值并update! 有一个表A有两个字段a,b, 我要修改a,条件是b是所有记录最大的(就是说有多条记录,我要修改最后一条记录),where该怎么写?
我写了一个:
update A set a=a+100
where b=(select max( b) from A)
这样不行,报错误360:
360:不能修改用于子查询中的表或视图。 UPDATE/INSERT语句使用的数据是从与子查询相同 的表中取出的。这种操作是不允许的,因为它将导致无穷循环的危险。你可以先把输入数据选择到个临时表,然后再用 UPDATE/INSERT语句引用此临时表。
因为这条语句是在一个脚本里的,所以想一条语句实现。另外其他办法不知怎么实现,临时表?存储过程?
小弟是新手,请各位帮忙看看,谢谢啦!作者: wenlq 时间: 2006-04-12 08:37
存储过程的调用肯定是一条语句了
create procedure modify()
define maxb like A.b;
select max(b) into maxb from A ;
update A set a=a+100
where b=maxb;
end procedure ;作者: elei1151 时间: 2006-04-12 16:29
谢谢wenlq,我试一下!
各位大侠,还有其他办法吗???作者: unixkiller 时间: 2006-04-13 11:02
select max(b) as b from A into temp Atmp;
update A set a=a+100 where b=(select b from Atmp);作者: elei1151 时间: 2006-04-14 15:55 标题: 回复 4楼 unixkiller 的帖子 测试ok!谢谢unixkiller!