Vous ne pouvez pas mettre à jour les informations que vous tiriez. Si vous êtes à la recherche d'afficher un numéro différent de ce que vous tiriez, vous pouvez le faire:
select
user_id,
case
when totals < 500 then 500
else totals
end as totals
from (
select user_id, sum(points_balance) as totals
from test
-- where user_id = 10
group by user_id
having totals between 400 and 499
) t
-- where user_id = 10;
+---------+--------+
| user_id | totals |
+---------+--------+
| 10 | 500 |
+---------+--------+
Si le résultat de
select user_id, sum(points_balance) as totals
from test
-- where user_id = 10
group by user_id
having totals between 400 and 499;
est
+---------+--------+
| user_id | totals |
+---------+--------+
| 10 | 420 |
+---------+--------+
et que vous voulez cogner cela jusqu'à 500, vous savez que la différence entre 500 et 420 est 80. Alors, insérez un nouvel enregistrement:
insert into test (user_id, points_balance) values (10, 80);
ou vous pouvez mettre à jour l'un des enregistrements à:
update test set points_balance = points_balance + 80
where user_id = 10 and points_balance = 120;
La question suivante - qui des nombreux dossiers de 10 vous mettre à jour? J'espère que vous avez un identifiant pour identifier chaque rangée de manière unique. Si vous avez cela, mettez à jour la ligne avec l'identifiant le plus bas. Si vous n'avez pas de champ qui identifie chaque ligne de manière unique, ce serait le bon moment pour créer un tel champ. Pour ce faire en une seule fois, vous devez créer une procédure stockée ou écrire un script en PHP/Python/quelle que soit la langue dans laquelle vous vous sentez à l'aise.
Modifiez votre question et fournissez les résultats que vous recherchez. –
pouvez-vous expliquer plus quel est le problème que vous rencontrez – essanousy
Alors, voulez-vous augmenter 1 des lignes (si oui, quelle ligne?), Ou ajouter une nouvelle ligne, pour l'augmenter à 500? – Sean