Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O replace into tem uma cláusula where?


Posso ver que você resolveu seu problema, mas para responder à sua pergunta original:

REPLACE INTO não tem um WHERE cláusula.

O REPLACE INTO sintaxe funciona exatamente como INSERT INTO exceto que todas as linhas antigas com a mesma chave primária ou exclusiva são excluídas automaticamente antes que a nova linha seja inserida.

Isso significa que em vez de um WHERE cláusula, você deve adicionar a chave primária aos valores que estão sendo substituídos para limitar sua atualização.
REPLACE INTO myTable (
  myPrimaryKey,
  myColumn1,
  myColumn2
) VALUES (
  100,
  'value1',
  'value2'
);

... fornecerá o mesmo resultado que ...
UPDATE myTable
SET myColumn1 = 'value1', myColumn2 = 'value2'
WHERE myPrimaryKey = 100;

...ou mais exatamente:
DELETE FROM myTable WHERE myPrimaryKey = 100;
INSERT INTO myTable(
  myPrimaryKey,
  myColumn1,
  myColumn2
) VALUES (
  100,
  'value1',
  'value2'
);