从1表中选择并在另一表中更新

时间:2016-05-24 10:03:22

标签: mysql

我想知道是否可以将这两个查询合并为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匹配的事务,然后更新另一个表中的currentPayout(user_table)

但是不是用PHP中的for循环来做,比如“USERID”,我想知道MySQL是否有可供我使用的任何函数?

听起来很复杂?我知道..这是......

让我试着以不同的方式解释它:

想象一下有一个表(让我们称之为事务),你有一堆不同的交易和诸如此类的东西。现在,假设您要计算该表中的所有用户收入,即选择ID与用户ID匹配的总成本,并在单独的表(user_table)中更新它。

但是,我想知道如何将当前查询重写为查询WHERE USERID = 55中的用户并搜索用户在{{1}中获得的内容的查询,而不是使用user_table。然后更新用户在transactions中获得的内容。 (但无需指定WHERE USERID)。

当前结构:

user_table

所以..基本上是在Transactions表中搜索并更新每个用户currentPayout的脚本或其他东西。

希望这是有道理的。如果没有,请告诉我,我会改写整个事情。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用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'