Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

CHÈN MySQL VÀO NƠI KHÔNG TỒN TẠI

Bạn có thể sử dụng INSERT IGNORE hoặc REPLACE hoặc INSERT ... ON DUPLICATE KEY UPDATE ...

Mỗi yêu cầu bạn phải có một ràng buộc duy nhất đối với product_id, ip_address

CHÈN BỎ QUA

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

sẽ bỏ qua phần chèn, nếu mục nhập đã tồn tại.

THAY THẾ

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

sẽ thực hiện xóa cùng với chèn mới.

CHÈN ... CẬP NHẬT

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

Sẽ cố gắng chèn và nếu điều đó không thành công, hãy cập nhật bản ghi hiện có.

Trong trường hợp của bạn, tôi nghĩ bạn sẽ ổn với INSERT IGNORE , tuy nhiên, Nếu bạn muốn thay đổi các giá trị khác nếu bản ghi đã tồn tại, hãy INSERT ... UPDATE ... sẽ hoạt động tốt.

Nói chung, tôi không khuyên bạn nên sử dụng REPLACE trừ khi bạn thực sự muốn DELETE FROM table WHERE ... cộng với INSERT INTO TABLE ...

Cập nhật

Điều này yêu cầu (đối với ví dụ này) một chỉ mục duy nhất cho sản phẩm kết hợp, ip_address. Bạn có thể đạt được chỉ mục này với

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. Các mục nhập SQL sẽ hết hạn sau 24 giờ

  2. Có cách nào để biết tên người dùng hiện tại của bạn trong mysql không?

  3. Có nên tránh MEDIUMINT trong MySQL không?

  4. php mysql Group By để nhận bản ghi mới nhất, không phải bản ghi đầu tiên

  5. Chèn giá trị hex vào MySql