MySQL ¿Cómo insertar nuevo registro o actualizar un campo en función de si es que existe?

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

Pregunta

Estoy tratando de implementar un sistema de clasificación donde guardo los dos campos siguientes en mi tabla db:

rating (la corriente nominal) num_rates (el número de clasificaciones presentado hasta la fecha)

UPDATE `mytable`
   SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
 WHERE uniqueCol='$uniqueCol'

las variables son de mi código PHP.

Así que, básicamente, a veces la fila con el uniqueCol no existe en la base de datos, por lo que ¿cómo puedo hacer la declaración anterior si el existe y si no lo hace y luego hacer algo como esto:

INSERT INTO `mytable`
   SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
¿Fue útil?

Solución

Tener un vistazo a INSERTAR EN ... una llave duplicada ACTUALIZACIÓN .

Debe quedar algo así:

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;

Asegúrese de tener una UNIQUE index o PRIMARY KEY en su uniqueCol.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top