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

MySQLdb python chèn hàng hoặc số gia tăng trên cột nếu tồn tại

Đây là một phương pháp sử dụng liên kết mà @johnthexii đã cung cấp ( bản trình diễn ) (nó chỉ sử dụng MySQL, vì vậy nó không dành riêng cho Python)

CREATE TABLE UserNames (`username` varchar(35) unique, `duplicates` int);

INSERT INTO UserNames (`username`, `duplicates`)
 VALUES ('stackoverflow.com', 0);

INSERT INTO UserNames (`username`, `duplicates`)
 VALUES ('dba.stackexchange.com/', 0)
 ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;

INSERT INTO UserNames (`username`, `duplicates`)
 VALUES ('stackoverflow.com', 0)
 ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;

Dưới đây là phân tích về những gì đang diễn ra:username trường được đánh dấu là duy nhất nên mọi nỗ lực chèn bản ghi với tên người dùng hiện có sẽ không thành công ở cấp cơ sở dữ liệu. Sau đó, INSERT tuyên bố có thêm một

ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1

Điều này cho MySQL biết rằng thay vì INSERT không thành công để chỉ lấy các duplicates cột và tăng dần một. Khi bạn chạy ba lệnh INSERT, bạn sẽ thấy hai bản ghi, stackoverflow.comduplicates giá trị là 1, trong khi dba.stackexchange.comduplicates giá trị bằng 0.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để triển khai tính năng tìm kiếm hiệu quả hơn?

  2. Lỗi nghiêm trọng:Gọi đến phương thức không xác định mysqli ::bind_param () trong

  3. Xóa các hàng khỏi hai bảng trong một truy vấn

  4. Bạn có thể sử dụng lại tập kết quả mysql trong PHP không?

  5. Logstash không đọc trong các mục nhập mới từ MySQL