好的,我查看了一些关于使用 group by 更新的问题,发现 sql 没有这样做,但我不知道如何对这个特定查询执行更新。
我有一个带有大量交易的现金簿,它们与银行对账单相匹配,但问题是银行对账单是一个汇总值,所以我需要以特定方式按交易金额分组并匹配这些总和值. 一旦有一个肯定的匹配,我就需要更新现金簿上该组中的每一行以进行核对。
到目前为止我所做的是获得正确的分组,然后对银行结单进行内部连接,以恢复所有匹配但显然不知道如何更新这些行的值......
有人有什么想法吗?
谢谢
好的,我查看了一些关于使用 group by 更新的问题,发现 sql 没有这样做,但我不知道如何对这个特定查询执行更新。
我有一个带有大量交易的现金簿,它们与银行对账单相匹配,但问题是银行对账单是一个汇总值,所以我需要以特定方式按交易金额分组并匹配这些总和值. 一旦有一个肯定的匹配,我就需要更新现金簿上该组中的每一行以进行核对。
到目前为止我所做的是获得正确的分组,然后对银行结单进行内部连接,以恢复所有匹配但显然不知道如何更新这些行的值......
有人有什么想法吗?
谢谢
如果我理解正确,您可以使用选择查询确定要更新的用户,然后只更新这些。我认为以下查询符合您的意图:
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
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