Un approccio:
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
Usiamo query OP originale che restituisce il gruppo di risultati visualizzata, e fare che un vista in linea (alias nella query precedente come q).
Da questo, si interroga un elenco distinto di ID utente e il numero di volte in cui l'ID utente viene visualizzato nel gruppo di risultati. Questo ci dà il nome utente e l'ammontare del deposito (1 dollaro per ogni volta che appare l'id utente) (alcuni database potrebbero volere che noi specifichiamo il valore come 1.0 anziché 1, per assicurarci che fosse decimale. Penso che la SUM sia più rappresentativa di ciò che stiamo cercando di realizzare.)
ci uniamo che vista in linea (r) alla tabella utente, e aggiungere l'importo del deposito al saldo corrente, per quell'utente (assumendo che il saldo viene archiviato come dollari decimali (1.00 = un dollaro)
Per il test, convertire il UPDATE
in un SELECT
dichiarazione:
- rimuovere il "
SET
" clausola
- aggiungere un "
ORDER BY
" clausola (opzionale) per rendere il risultati determinati
- rimuovere la parola chiave "
UPDATE
" e sostituirla
con:
SELECT r.userid
, r.deposit
, u.balance AS old_balance
, u.balance + r.deposit AS new_balance
, u.userid
FROM
completa di selezione:
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
NOTA non c'è clausola WHERE, il predicati JOIN (nella clausola ON) è ciò che determina quali righe sono selezionate/interessato nella tabella utente.
raggruppa i risultati della query per userID e somma coinsID aggiunge una colonna per il conteggio di userID moltiplica il conteggio di userID per il tuo $ 1 e aggiorna il coinsId con quel nuovo valore. – xQbert
@AliBZ, Sì 'saldo' è il nome della colonna nella tabella utente. Dove devo aggiornare il bilancio. –
Mi dispiace, mio male, ho perso quella parte. – AliBZ