Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL INSERT INTO WHERE NOT EXIST

Anda dapat menggunakan INSERT IGNORE atau REPLACE atau INSERT ... ON DUPLICATE KEY UPDATE ...

Masing-masing mengharuskan Anda untuk memiliki batasan unik pada product_id, ip_address

MASUKKAN ABAIKAN

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

akan mengabaikan sisipan, jika entri sudah ada.

GANTI

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

akan melakukan penghapusan plus penyisipan baru.

MASUKKAN ... PERBARUI

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

Akan mencoba memasukkan dan jika gagal memperbarui catatan yang ada.

Dalam kasus Anda, saya pikir Anda harus baik-baik saja dengan INSERT IGNORE , namun Jika Anda ingin mengubah nilai lain jika catatan sudah ada, INSERT ... UPDATE ... harus bekerja dengan baik.

Saya biasanya tidak akan merekomendasikan untuk menggunakan REPLACE kecuali jika Anda benar-benar menginginkan DELETE FROM table WHERE ... plus INSERT INTO TABLE ...

Perbarui

Ini memerlukan (untuk contoh ini) indeks unik untuk produk kombinasi, ip_address. Anda dapat mencapai ini dengan

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. 'Hubungkan' aplikasi Rails ke DB MySQL yang sudah ada?

  2. Hibernasi mengirim kueri berlebihan ke database

  3. MYSQL SELECT peringkat pengguna (lebih dari x &kurang dari y)

  4. MySQL DAYOFWEEK() - minggu saya dimulai dengan senin

  5. Tampilkan hasil kueri SQL di php