Mysql
 sql >> Base de données >  >> RDS >> Mysql

Remplacer dans a-t-il une clause where?

Je vois que vous avez résolu votre problème, mais pour répondre à votre question initiale :

REPLACE INTO n'est pas avoir un WHERE clause.

Le REPLACE INTO la syntaxe fonctionne exactement comme INSERT INTO sauf que toutes les anciennes lignes avec la même clé primaire ou unique sont automatiquement supprimées avant l'insertion de la nouvelle ligne.

Cela signifie qu'au lieu d'un WHERE clause, vous devez ajouter la clé primaire aux valeurs remplacées pour limiter votre mise à jour.

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

... fournira le même résultat que...

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

...ou plus exactement :

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