我想知道是否可以将这两个查询合并为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的脚本或其他东西。
希望这是有道理的。如果没有,请告诉我,我会改写整个事情。
谢谢!
答案 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'