users表中有user_id(主键),sal两个字段,
pays表中有pay_id(主键),user_id(外键),pay三个字段
users表与pays表中的记录是一对多关系,也就是说users表中的一个user_id在pays中可以有多个pay_id
现在要,统计每个user_id的总的pay和,然后更新到users表中的对应user_id,
这个SQL语句要怎么写?

解决方案 »

  1.   

    UPDATE user
    SET sal = P.pay
    FROM users U
    INNER JOIN (SELECT user_id, SUM(pay) AS pay FROM pays GROUP BY user_id)P
    ON U.user_id = P.user_id
      

  2.   

    为什么要单独存一个表呢?
    即时查询:Select user_id, Sum(pay) as sal From pays Group by user_id
    或创建视图:Create View TotalPay(user_id, sal) as Select user_id, Sum(pay) From pays Group by user_id
    不是更简单
      

  3.   

    这是我看了你的之后写的
    update users set sal=p.sp
    from (select user_id,sum(pay) as sp from pay group by user_id) as p
    where users.user_id=p.user_id
      

  4.   

    users表中有user_id(主键),sal两个字段,
    pays表中有pay_id(主键),user_id(外键),pay三个字段
    users表与pays表中的记录是一对多关系,也就是说users表中的一个user_id在pays中可以有多个pay_id
    现在要,统计每个user_id的总的pay和,然后更新到users表中的对应user_id,
    这个SQL语句要怎么写?update users
    set sal = b.pay
    from users a ,(select user_id,sum(pay) as pay from pays group by user_id) b
    where a.user_id = b.user_id