我想知道是否有可能将这两个查询合并为1。

SELECT DISTINCT SUM(ROUND(cost,2)) AS totalEarned FROM transactions WHERE `USERID` = 55 AND `payout` != 'PAIDOUT';


UPDATE user_table SET currentPayout = $newUpdate WHERE USERID = 55


合并它们并不是真正的问题。问题是我想跳过WHERE USERID语句,从而搜索USERID与该USERID匹配的事务,然后更新另一个表(user_table)中的currentPayout。

但是我没有在PHP中使用for循环(例如“ where USERID”)来执行此操作,而是想知道MySQL是否具有可供我使用的功能?

听起来复杂吗?我知道它是..

让我尝试以另一种方式解释它:

想象一下,有一张桌子(我们称它为交易),那里有一堆不同的交易,什么都没有。现在,假设您要计算该表中的所有用户收入,即选择ID与用户ID匹配的总费用,然后在单独的表(user_table)中进行更新。

但是,我不是想用WHERE USERID = 55来完成此操作,而是想知道如何将当前查询重写为在user_table中搜索用户并在transactions中搜索用户的收入,然后更新用户的收入的查询在user_table中。 (但不必指定WHERE USERID)。

当前结构:

:::Transactions Table:::
ID,
UserID,
Cost

:::User Table:::
ID,
UserID,
currentPayout


因此,基本上是脚本或在“事务”表中搜索并更新每个用户currentPayout的内容。

希望这是有道理的。如果没有,请告诉我,我将重写整个内容。

谢谢!

最佳答案

您可以在UPDATE语句中使用相关查询:

UPDATE user_table u
SET u.currentPayout = (SELECT SUM(ROUND(s.cost,2)) AS totalEarned s
                       FROM transactions s
                       WHERE s.USERID = u.USERID AND s.payout != 'PAIDOUT'

关于mysql - 从1个表中选择并在另一个表中更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37410338/

10-14 18:53
查看更多