一種方法:
UPDATE user_table u
JOIN (SELECT q.userid
, SUM(1.00) AS deposit
FROM (
-- original OP query goes here
) q
GROUP BY q.userid
) r
ON r.userid = u.userid
SET u.balance = u.balance + r.deposit
我們使用原來的OP查詢,返回所顯示的結果集,並作出內嵌視圖(化名查詢上面q)。
由此,我們查詢一個不同的userid列表,以及userid在結果集中出現的次數。這給了我們用戶名和存款金額(用戶每次出現1美元)(某些數據庫可能希望我們將值指定爲1.0而不是1,以確保它是十進制的。我認爲SUM更具代表性)
我們將該內嵌視圖(r)加入到用戶表中,並將該存款金額添加到該用戶的當前餘額(假設餘額以十進制美元形式存儲( 1。00 =一元)
測試,轉換UPDATE
成SELECT
聲明:
- 刪除 「
SET
」 條款
- 增加一個 「
ORDER BY
」 條款(可選),使結果確定
- 刪除「
UPDATE
」關鍵字並將其替換爲
與:
SELECT r.userid
, r.deposit
, u.balance AS old_balance
, u.balance + r.deposit AS new_balance
, u.userid
FROM
全部選擇:
SELECT r.userid
, r.deposit
, u.balance AS old_balance
, u.balance + r.deposit AS new_balance
, u.userid
FROM user_table u
JOIN (SELECT q.userid
, SUM(1.00) AS deposit
FROM (
-- original OP query goes here
) q
GROUP BY q.userid
) r
ON r.userid = u.userid
注沒有WHERE子句,連接謂詞(ON子句中)是什麼決定哪些行被選擇/在用戶表中受到影響。
按用戶ID和sum coinsID對查詢結果進行分組添加用戶ID計數的列乘以$ 1的用戶ID計數,並用該新值更新coinsId。 – xQbert
@AliBZ,是'balance'是用戶表中的列名。我需要更新餘額。 –
對不起,我的錯,我錯過了那部分。 – AliBZ