sql >> Database >  >> RDS >> Mysql

MySQLdb python rij invoegen of aantal op kolom verhogen indien aanwezig

Hier is een benadering met behulp van de link die @johnthexii heeft verstrekt (demo ) (het gebruikt alleen MySQL, dus het is niet specifiek voor 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;

Hier is een overzicht van wat er aan de hand is:De username veld is gemarkeerd als uniek, dus elke poging om een ​​record in te voegen met een bestaande gebruikersnaam zal mislukken op databaseniveau. Dan de INSERT verklaring heeft een extra

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

Dit vertelt MySQL dat in plaats van de INSERT te laten mislukken, gewoon de duplicates kolom en verhoog met één. Wanneer u de drie INSERT-opdrachten uitvoert, ziet u twee records, stackoverflow.com heeft een duplicates waarde van 1, terwijl dba.stackexchange.com heeft een duplicates waarde van 0.




  1. Broncode van het bestaande object in Oracle

  2. hoe cascade te gebruiken in orakel

  3. Als verklaring binnen Where-clausule

  4. Haal alle unieke jaren uit een datumkolom met behulp van SQL (MySQL)