Mysql
 sql >> база данни >  >> RDS >> Mysql

Замяната в има ли клауза Къде?

Виждам, че сте решили проблема си, но за да отговоря на първоначалния си въпрос:

REPLACE INTO не има WHERE клауза.

REPLACE INTO синтаксисът работи точно като INSERT INTO с изключение на това, че всички стари редове със същия първичен или уникален ключ се изтриват автоматично, преди да се вмъкне новият ред.

Това означава, че вместо WHERE клауза, трябва да добавите първичния ключ към стойностите, които се заменят, за да ограничите актуализацията си.

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

...ще осигури същия резултат като...

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

...или по-точно:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избягване на двусмислени грешки в колоните при използване на JOIN в MySQL

  2. Намерете най-добрите възможни начини за 2-ра най-висока заплата

  3. Таблица с формат за дата на MySQL

  4. Какво не е наред с тази mysql заявка?

  5. Вмъкване след съкращаване започва от 1; но вмъкване след изтриване се възобновява от предишната стойност