有两个表
用一个表的数据去更新另一个表的数据(是一对多的关系)如 一个表是部门表A:部门:人力资源部:金额:10000元
另一个表是人员表B:部门:         姓名:  入厂时间         基本工资        状态
人力资源部 :  张三,    2012-12-1     3000         已发 
人力资源部 :  李四,    2012-12-10    6000         已发
人力资源部 :  王五,    2012-12-20     2000        未发
如何用A表的部门去对应B表的部门(1对多的关系),找出B表中满足条件的,按入厂时间先后发放工资,更新发放状态,如表中金额为1000只能更新前两条记录,第三条状态未未发放,如何更新速度最快,因为两个表数据都在几十万天以上,

解决方案 »

  1.   

    sum(基本工资) over (partition by 人力资源部 order by 入场时间)
      

  2.   

    用 for 游标循环来更新吧,逻辑简单写表间更新的话,一条SQL语句比较复杂,不建议
      

  3.   

    update 人员表 set 状态='已发' where 员工ID in (
    select 员工ID from (
    select 部门,员工ID,sum(基本工资) over (partition by 部门 order by 入场时间) total from 人员表
    ) a,部门表 b where a.部门=b.部门 and a.total <= b.金额
    );