簡體   English   中英

從1表中選擇並在另一表中更新

[英]Selecting from 1 Table and Updating in Another

我想知道是否可以將這兩個查詢合並為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循環來做,比如“USERID”,我想知道MySQL是否有可供我使用的任何功能?

聽起來很復雜? 我知道它是..

讓我試着以不同的方式解釋它:

想象一下,有一個表(讓我們稱之為事務),你有一堆不同的交易和諸如此類的東西。 現在,假設您要計算該表中的所有用戶收入,即選擇ID與用戶ID匹配的總成本,並在單獨的表(user_table)中更新它。

但是我想知道如何將當前查詢重寫為查詢,該查詢在user_table搜索用戶並搜索用戶在transactions中獲得的內容,然后更新用戶在user_table獲得的內容,而不是使用WHERE USERID = 55 (但無需指定WHERE USERID)。

目前的結構:

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

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

所以..基本上是在Transactions表中搜索並更新每個用戶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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM