MySQL Comment insérer un nouveau disque ou mettre à jour un champ selon qu'il existe?
-
19-09-2019 - |
Question
Je suis en train de mettre en œuvre un système de notation où je garde les deux champs suivants dans ma table db:
note (la note actuelle) num_rates (le nombre d'évaluations soumises à ce jour)
UPDATE `mytable`
SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
WHERE uniqueCol='$uniqueCol'
les variables sont de mon code PHP.
Alors, au fond parfois la ligne avec la uniqueCol n'existe pas dans la base de données, alors comment puis-je faire la déclaration ci-dessus si le existe et si elle n'a pas faire quelque chose comme ceci:
INSERT INTO `mytable`
SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
La solution
Jetez un oeil à INSERT ... ON KEY UPDATE DUPLICATE.
Il devrait ressembler à quelque chose comme ça:
INSERT INTO mytable (rating, num_rates, uniqueCol)
VALUES ($theRating, 1, $uniqueCol)
ON DUPLICATE KEY UPDATE
rating=((rating*num_rates)+$theRating)/num_rates,
num_rates=num_rates+1;
Assurez-vous d'avoir un UNIQUE index
ou PRIMARY KEY
sur votre uniqueCol
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow