Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Hat Ersetzen in eine Where-Klausel?

Ich sehe, dass Sie Ihr Problem gelöst haben, aber um Ihre ursprüngliche Frage zu beantworten:

REPLACE INTO tut nicht ein WHERE haben Klausel.

Der REPLACE INTO Syntax funktioniert genau wie INSERT INTO außer dass alle alten Zeilen mit demselben Primärschlüssel oder eindeutigen Schlüssel automatisch gelöscht werden, bevor die neue Zeile eingefügt wird.

Das bedeutet, dass anstelle eines WHERE -Klausel sollten Sie den Primärschlüssel zu den zu ersetzenden Werten hinzufügen, um Ihre Aktualisierung einzuschränken.

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

... liefert das gleiche Ergebnis wie ...

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

...oder genauer gesagt:

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