MySQL Wie fügt ich einen neuen Datensatz ein oder aktualisiert ein Feld, je nachdem, ob es vorhanden ist?
-
19-09-2019 - |
Frage
Ich versuche ein Bewertungssystem zu implementieren, in dem ich die folgenden zwei Felder in meiner DB -Tabelle aufbewahre:
Bewertung (die aktuelle Bewertung) num_rates (die Anzahl der bisher eingereichten Bewertungen)
UPDATE `mytable`
SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
WHERE uniqueCol='$uniqueCol'
Die Variablen stammen aus meinem PHP -Code.
Im Grunde genommen gibt es also manchmal die Reihe mit dem Uniquecol in der DB nicht.
INSERT INTO `mytable`
SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
Lösung
Sich ansehen Einfügen ... auf das doppelte Schlüsselaktualisierung.
Es sollte so etwas aussehen:
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;
Stellen Sie sicher, dass Sie eine haben UNIQUE index
oder PRIMARY KEY
auf Ihrem uniqueCol
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow