sql >> Base de Datos >  >> RDS >> Mysql

¿Reemplazar en tiene una cláusula dónde?

Puedo ver que ha resuelto su problema, pero para responder a su pregunta original:

REPLACE INTO no tener un WHERE cláusula.

El REPLACE INTO la sintaxis funciona exactamente como INSERT INTO excepto que las filas antiguas con la misma clave principal o única se eliminan automáticamente antes de insertar la nueva fila.

Esto significa que en lugar de un WHERE cláusula, debe agregar la clave principal a los valores que se reemplazan para limitar su actualización.

REPLACE INTO myTable (
  myPrimaryKey,
  myColumn1,
  myColumn2
) VALUES (
  100,
  'value1',
  'value2'
);

...proporcionará el mismo resultado que...

UPDATE myTable
SET myColumn1 = 'value1', myColumn2 = 'value2'
WHERE myPrimaryKey = 100;

...o más exactamente:

DELETE FROM myTable WHERE myPrimaryKey = 100;
INSERT INTO myTable(
  myPrimaryKey,
  myColumn1,
  myColumn2
) VALUES (
  100,
  'value1',
  'value2'
);