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

MySQL chỉ chèn hàng mới nếu tổ hợp các cột (cho phép trùng lặp) là duy nhất

Tạo một chỉ mục duy nhất tổng hợp. Điều này sẽ cho phép bất kỳ số lượng trùng lặp nào trong các trường riêng lẻ, nhưng sự kết hợp cần phải là duy nhất.

CREATE UNIQUE INDEX ix_uq ON test (field1, field2, field3);

... và sử dụng INSERT IGNORE để chèn nếu chỉ mục duy nhất không bị vi phạm. Nếu có, chỉ cần bỏ qua phần chèn.

INSERT IGNORE INTO test (field1,field2,field3) VALUES (1,1,1);

SQLfiddle để thử nghiệm .

Nếu bạn muốn chèn trừ khi có bản sao và cập nhật nếu có, bạn cũng có thể sử dụng INSERT INTO ... ON DUPLICATE KEY UPDATE;

INSERT INTO test (field1, field2, field3) VALUES (1,1,1)
  ON DUPLICATE KEY UPDATE field4=field4+1;

SQLfiddle khác .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHÈN VÀO bảng NẾU tồn tại bảng nếu không thì TẠO BẢNG

  2. Chạy di chuyển với Rails trong vùng chứa Docker với nhiều bản sao vùng chứa

  3. Cách tốt nhất để mã hóa / giải mã chuỗi json là gì

  4. MySQL:4 Bảng có-nhiều-thông qua Tham gia?

  5. MySQL - thủ tục được lưu trữ trả về giá trị không mong đợi