MySQL Wie fügt ich einen neuen Datensatz ein oder aktualisiert ein Feld, je nachdem, ob es vorhanden ist?

StackOverflow https://stackoverflow.com/questions/2036794

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
War es hilfreich?

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
scroll top