Mysql
 sql >> Database >  >> RDS >> Mysql

Sostituire in ha una clausola where?

Vedo che hai risolto il tuo problema, ma per rispondere alla tua domanda originale:

REPLACE INTO non avere un WHERE clausola.

Il REPLACE INTO la sintassi funziona esattamente come INSERT INTO tranne per il fatto che tutte le vecchie righe con la stessa chiave primaria o univoca vengono automaticamente eliminate prima dell'inserimento della nuova riga.

Ciò significa che invece di un WHERE clausola, dovresti aggiungere la chiave primaria ai valori da sostituire per limitare il tuo aggiornamento.

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

...fornirà lo stesso risultato di...

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

...o più esattamente:

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