laaasssss 2014-03-09 15:59 采纳率: 0%
浏览 817

MSSQL UPDATE语句的疑问,求解

订单总表
OrdersAll (客户总记录,user唯一)
user money
张一 100
张二 100
张三 100
张四 100
张五 100

订单流水表
Orders (订单记录,user根据订单生成)
user money
张一 10
张三 15
张四 10
张一 20
张五 15
张二 30
张三 10
张一 50

问:怎么用一条update语句把"订单流水表"中的money数额累加到该user在"订单总表"的money数额中?

我用这个语句执行以后得到的结果是错误的。
比如张一应该是100+80=180,结果却只加了10。困惑。。。 。。。
update a set a.money=a.money+b.money from dbo.OrdersAll AS a,dbo.Orders AS b where a.user=b.user;

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-01 20:26
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你使用的SQL查询语法有误,正确的SQL应该使用子查询(subquery)来完成你的任务。以下是一个可能的解决方案:

    UPDATE OrdersAll a, Orders b
    SET a.money = a.money + b.money
    FROM dbo.OrdersAll AS a
    JOIN dbo.Orders AS b ON a.user = b.user;
    

    这段代码首先选择OrdersAll表中的所有用户,并将其与Orders表中的相应用户进行连接。然后,它计算每个用户的金额总和,并将这些金额添加到OrdersAll表中的对应金额上。

    注意:这只是一个基本的例子,实际的SQL可能会更复杂,因为你需要处理更多的条件、排序等。此外,确保所有的表都具有相同的结构和命名规范。

    评论

报告相同问题?