sql >> Database >  >> RDS >> Mysql

Heeft vervangen in een waar-clausule?

Ik zie dat je je probleem hebt opgelost, maar om je oorspronkelijke vraag te beantwoorden:

REPLACE INTO doet niet hebben een WHERE clausule.

De REPLACE INTO syntaxis werkt precies zoals INSERT INTO behalve dat alle oude rijen met dezelfde primaire of unieke sleutel automatisch worden verwijderd voordat de nieuwe rij wordt ingevoegd.

Dit betekent dat in plaats van een WHERE clausule, moet u de primaire sleutel toevoegen aan de waarden die worden vervangen om uw update te beperken.

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

...geeft hetzelfde resultaat als...

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

...of preciezer:

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


  1. Voeg een NULL-waarde in de INT-kolom in

  2. Is er een Oracle SQL-query die meerdere rijen in één rij samenvoegt?

  3. Hoe u alle beperkingen van CHECK &Foreign Key voor een tabel in SQL Server inschakelt (T-SQL-voorbeelden)

  4. Implementeer MySQL Server + DB met .Net-toepassing