永发信息网

数据库怎么更新一张表内数据多条数据?

答案:4  悬赏:20  手机版
解决时间 2021-08-22 00:15
  • 提问者网友:绫月
  • 2021-08-21 05:41

 

现在,我想把同一个人的2010-07月份的fuzhu_jiangjin
复制到这一个人2010-08月份的fuzhu_jiangjin

SQL语句该怎么写

employee_id都是一样的(从0001~0056)

最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-08-21 06:18

不用吧??用一个游标cq不就搞定了??


把7月份的数据存在游标里,然后用一个for循环就搞点了.


for  employee_id in cq.employee_id loop


update 表set fuzhu_jiangjin= cq.fuzhu_jiangjin where employee_id =cq.employee_id ;


commit;


end loop;

全部回答
  • 1楼网友:毛毛
  • 2021-08-21 08:50

一个简单update根本不用游标,游标效率很低,那个满意答案的人根本就不懂。

一个update就搞定的,下面的方法在oracle数据库中跑是绝对没问题的。

要注意的是nvl,如果有一个employee_id 7月份没有而八月份有,你写的语句会把8月份的fuzhu_jiangjin 更新为null值,这样就有问题了。

update table a set fuzhu_jiangjin = NVL((select b.fuzhu_jiangjin from table b where b.employee_id = a.employee_id),a.fuzhu_jiangjin and fuzhu_riqi='2010-07')

where fuzhu_riqi='2010-08';

commit;

将8月份的jiangjin按照7月份的更新,如果没有找到对应记录,则维持原来的奖金额。

应为你没提供表名,所以用table代替。

 

  • 2楼网友:英雄的欲望
  • 2021-08-21 08:13

update table a set fuzhu_jiangjin = NVL((select b.fuzhu_jiangjin from table b where b.employee_id = a.employee_id),a.fuzhu_jiangjin and fuzhu_riqi='2010-07')

where fuzhu_riqi='2010-08';

commit;

将8月份的jiangjin按照7月份的更新,如果没有找到对应记录,则维持原来的奖金额。

应为你没提供表名,所以用table代替了

  • 3楼网友:有你哪都是故乡
  • 2021-08-21 06:57

你是要写SQL语句吗?

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯