带分组的SQL更新

带分组的SQL更新,sql,sql-server-2008,aggregate-functions,Sql,Sql Server 2008,Aggregate Functions,好的,我查看了一些关于使用group by进行更新的问题,发现sql不能做到这一点,但我不知道如何对这个特定查询执行更新 我有一个现金簿,上面有大量交易,它们与银行对账单匹配,但问题是银行对账单是一个聚合值,因此我需要以特定的方式按交易金额分组,并匹配这些聚合值。一旦存在正匹配,我就需要更新现金簿上该组中要对账的每一行 到目前为止,我所做的是得到正确的分组,然后对bank station进行内部连接,以返回所有匹配的值,但显然不知道如何更新这些行 有人有什么想法吗 谢谢您可以将结果存储在一个临时

好的,我查看了一些关于使用group by进行更新的问题,发现sql不能做到这一点,但我不知道如何对这个特定查询执行更新

我有一个现金簿,上面有大量交易,它们与银行对账单匹配,但问题是银行对账单是一个聚合值,因此我需要以特定的方式按交易金额分组,并匹配这些聚合值。一旦存在正匹配,我就需要更新现金簿上该组中要对账的每一行

到目前为止,我所做的是得到正确的分组,然后对bank station进行内部连接,以返回所有匹配的值,但显然不知道如何更新这些行

有人有什么想法吗


谢谢

您可以将结果存储在一个临时表中(在MySQL中创建临时表),然后使用它过滤您的更新

SELECT id, name, firstname INTO #tmp FROM stuff;
UPDATE other SET count='new value' WHERE id IN (SELECT id FROM #tmp);

语法可能错误,因为我没有使用MSSQL。如果我理解正确,您可以使用select查询确定要更新的用户,然后只更新这些用户。我认为以下查询符合您的意图:

with toupdate as (select userid
                  from (select userid, sum(value) as sumvalue
                        from cashbook cb
                        group by userid
                       ) join
                       bankstatement bs
                       on cb.userid = bs.userid 
                  where cb.sumvalue = bs.value
                 )
update cashbook
    set reconciled = 1
from toupdate
where cashbook.userid = toupdaqte.userid

您正在使用哪个数据库引擎?编辑:ups,无法帮助;)如果提供一些表定义和示例数据,则更有可能得到答案。它不一定是完整的,事实上,如果你发布一些高度集中、精简的代码会更好。另外,如果您告诉我们数据库的风格(包括版本),并不是所有的SQL解决方案都适合每个数据库,那么这也很有用。