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

MySQL INSERT TO WHERE НЕ СЪЩЕСТВУВА

Можете да използвате или INSERT IGNORE или REPLACE или INSERT ... ON DUPLICATE KEY UPDATE ...

Всеки изисква да имате уникално ограничение за product_id, ip_address

ВМЕСЕТЕ ИГНОРИРАНЕ

INSERT IGNORE INTO products VALUES (null, 111, '8.8.8.8')

ще игнорира вмъкването, ако записът вече съществува.

ЗАМЕНЕТЕ

REPLACE INTO products VALUES (null, 111, '8.8.8.8')

ще извърши изтриване плюс ново вмъкване.

ВМЪКНЕТЕ ... АКТУАЛИЗИРАНЕ

INSERT INTO products VALUES (null, 111, '8.8.8.8')
ON DUPLICATE KEY UPDATE products SET last_modified = NOW()

Ще се опита да вмъкне и ако това не успее, актуализира съществуващия запис.

Във вашия случай мисля, че трябва да сте добре с INSERT IGNORE , но ако искате да промените други стойности, ако записът вече съществува, INSERT ... UPDATE ... трябва да работи добре.

Обикновено не бих препоръчал да използвате REPLACE освен ако наистина не искате DELETE FROM table WHERE ... плюс INSERT INTO TABLE ...

Актуализиране

Това изисква (за този пример) уникален индекс за комбинирания продукт, ip_address. Можете да постигнете това с

ALTER TABLE products
ADD UNIQUE INDEX `UIDX_PRODUCT__IP_ADRESS`(product, ipaddress);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. инструменти за тестване на натоварване на mysql

  2. Връщане на последния идентификатор (IDENTITY) При вмъкване на ред VB.NET MySQL

  3. проверете дали заявката води до празен ред mysqli

  4. Достъпът е отказан за потребител 'root'@'localhost'

  5. Как да изчислим средните продажби на ден в MySQL