0

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

我有一个带有大量交易的现金簿,它们与银行对账单相匹配,但问题是银行对账单是一个汇总值,所以我需要以特定方式按交易金额分组并匹配这些总和值. 一旦有一个肯定的匹配,我就需要更新现金簿上该组中的每一行以进行核对。

到目前为止我所做的是获得正确的分组,然后对银行结单进行内部连接,以恢复所有匹配但显然不知道如何更新这些行的值......

有人有什么想法吗?

谢谢

4

2 回答 2

0

如果我理解正确,您可以使用选择查询确定要更新的用户,然后只更新这些。我认为以下查询符合您的意图:

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
于 2012-05-17T02:56:48.653 回答
0

You can store your results in a temporary table (CREATE TEMPORARY TABLE in MySQL) and then use it to filter your update.

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

The Syntax maybe wrong since I don't use MSSQL

于 2012-05-16T15:34:19.710 回答