MySQL Come inserire nuovi record o aggiornare un campo a seconda se esiste?
-
19-09-2019 - |
Domanda
Sto cercando di implementare un sistema di rating dove tengo i seguenti due campi nella mia tabella db:
Valutazione (la corrente nominale) num_rates (il numero di feedback presentato finora)
UPDATE `mytable`
SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
WHERE uniqueCol='$uniqueCol'
le variabili sono dal mio codice PHP.
Quindi, in sostanza a volte la riga con l'uniqueCol non esiste nel DB, così come posso fare la dichiarazione di cui sopra, se il esiste e se non lo fa poi fare qualcosa di simile a questo:
INSERT INTO `mytable`
SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
Soluzione
Dai un'occhiata alla INSERT ... ON DUPLICATE KEY UPDATE .
Dovrebbe essere qualcosa di simile:
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;
Assicurarsi di avere un UNIQUE index
o PRIMARY KEY
sul uniqueCol
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow