0

如果我自欺欺人,但对“基本”类型之外的 mysql 查询仍然相当陌生,请原谅我。目前我有两个数据表。

表 1 使用 LOAD INTO 将数据解析到其中,表 2 具有手动输入的用户信息数据。这是自动从 | 中提取的。每天两次分隔文件。

以下是表 1 中包含我需要验证的数据的列(除了这些列之外,还有更多列):

sendID |  recID | transAmt | transDate | transStatus

以下列来自表 2:

userID | userName | currentCapacity | maxCapacity

我正在尝试做的是运行更新,其中userID curentCapacity增加一,当userID找到sendIDrecID但仅当transStatus = Active. 我尝试了以下方法:

UPDATE table1,table2
SET table2.currentCapacity=table2.currentCapacity+1 
WHERE ( table2.transStatus="Active" AND (table2.userID = table1.sendID OR table1.recID))

这有效,并且currentCapacity增加了 1,但它只增加了 1。我想要的效果是将 设置currentCapacity为等于所有transStatus=“Active”的总和。

我尝试了以下操作,它返回“#1111 - 组函数的无效使用”错误:

UPDATE table1,table2
SET table2.currentCapacity=SUM(table1.transStatus) 
WHERE ( table2.transStatus="Active" AND (table2.userID = table1.sendID OR table1.recID))

有什么建议或指导吗?

4

1 回答 1

2

如果它给出了您想要的结果,请尝试一下(未手动测试

UPDATE  table2 b
        INNER JOIN
        (
            SELECT  ID, SUM(transStatus = 'Active') total
            FROM
                    (
                        SELECT  sendID ID, transStatus FROM table1
                        UNION ALL
                        SELECT  recID ID, transStatus FROM table1
                    ) x
            GROUP   BY ID
        ) a ON b.userID = a.ID
SET     b.currentCapacity = a.total
于 2013-05-15T03:33:14.633 回答