sql >> Databasteknik >  >> RDS >> Mysql

Har replace into en where-klausul?

Jag kan se att du har löst ditt problem, men för att svara på din ursprungliga fråga:

REPLACE INTO gör inte har en WHERE klausul.

REPLACE INTO syntax fungerar exakt som INSERT INTO förutom att alla gamla rader med samma primära eller unika nyckel raderas automatiskt innan den nya raden infogas.

Detta betyder att istället för en WHERE sats, bör du lägga till primärnyckeln till de värden som ersätts för att begränsa din uppdatering.

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

...ger samma resultat som...

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

...eller mer exakt:

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


  1. Du kan nu använda Access med Microsoft Azure MFA!

  2. cx_Oracle och undantagshantering - god praxis?

  3. Kopiera rad men med nytt id

  4. Lagring av långa binära (rådata) strängar