我想知道是否有可能将这两个查询合并为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/