Đâ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.com
có duplicates
giá trị là 1, trong khi dba.stackexchange.com
có duplicates
giá trị bằng 0.