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

MySQLdb python menyisipkan baris atau jumlah kenaikan pada kolom jika ada

Berikut adalah pendekatan menggunakan tautan yang disediakan @johnthexii (demo ) (hanya menggunakan MySQL, jadi tidak spesifik untuk 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;

Berikut adalah rincian dari apa yang terjadi:username bidang ditandai sebagai unik sehingga setiap upaya untuk memasukkan catatan dengan nama pengguna yang ada akan gagal di tingkat basis data. Kemudian INSERT pernyataan memiliki tambahan

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

Ini memberi tahu MySQL bahwa alih-alih gagal INSERT, ambil saja duplicates kolom dan bertambah satu. Saat Anda menjalankan tiga perintah INSERT, Anda akan melihat dua catatan, stackoverflow.com memiliki duplicates nilai 1, sedangkan dba.stackexchange.com memiliki duplicates nilai 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. Mengoptimalkan kueri berdasarkan indeks berkerumun dan tidak berkerumun di SQL?

  2. Bagaimana mengatasi Django.db.utils.IntegrityError:(1364, Bidang 'nama' tidak memiliki nilai default)

  3. bandingkan dua nilai yang dipisahkan koma di mysql

  4. #1025 - Kesalahan saat mengganti nama (errno:150) di mysql

  5. Temukan tanggal yang hilang dan tambahkan ke hasil - MySql