Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL WSTAW GDZIE NIE ISTNIEJE

Możesz użyć INSERT IGNORE lub REPLACE lub INSERT ... ON DUPLICATE KEY UPDATE ...

Każdy wymaga unikalnego ograniczenia identyfikatora produktu, adresu ip

WSTAW IGNORUJ

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

zignoruje wstawkę, jeśli wpis już istnieje.

ZAMIEŃ

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

wykona usunięcie i nowe wstawienie.

WSTAW... AKTUALIZUJ

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

Spróbuje wstawić, a jeśli to się nie powiedzie, zaktualizuje istniejący rekord.

W twoim przypadku myślę, że powinieneś być w porządku z INSERT IGNORE , jednak jeśli chcesz zmienić inne wartości, jeśli rekord już istnieje, INSERT ... UPDATE ... powinien działać dobrze.

Generalnie nie polecam używania REPLACE chyba że naprawdę chcesz DELETE FROM table WHERE ... plus INSERT INTO TABLE ...

Aktualizacja

Wymaga to (w tym przykładzie) unikalnego indeksu dla połączonego produktu, adres_ip. Możesz to osiągnąć za pomocą

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. Zapytanie o konwersję z datetime na date mysql

  2. Wstaw używając LEFT JOIN i INNER JOIN

  3. Jak zarządzasz bazami danych w fazie rozwoju, testów i produkcji?

  4. Jak wyświetlić wiersze nieobecne w innej tabeli w MySQL?

  5. Przesunięcie nieskończonych wierszy MySQL