sql >> Database teknologi >  >> RDS >> Mysql

MySQLdb python indsæt række eller øg tæller på kolonne, hvis det findes

Her er en tilgang ved hjælp af linket som @johnthexii gav (demo ) (det bruger kun MySQL, så det er ikke Python-specifikt)

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;

Her er en oversigt over, hvad der foregår:username feltet er markeret som unikt, så ethvert forsøg på at indsætte en post med et eksisterende brugernavn vil mislykkes på databaseniveau. Derefter INSERT erklæringen har en ekstra

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

Dette fortæller MySQL, at i stedet for at mislykkes med INSERT, skal du bare tage duplicates kolonne og øges med én. Når du kører de tre INSERT-kommandoer, vil du se to poster, stackoverflow.com har en duplicates værdi på 1, mens dba.stackexchange.com har en duplicates værdi på 0.




  1. En oversigt over Just-in-Time Compilation (JIT) til PostgreSQL

  2. Sådan tilføjes rangeringspositioner til rækker med DENSE_RANK() i SQL

  3. Oracle - Vælg, hvor feltet har små bogstaver

  4. Forskellen mellem `brew services start mysql` og `mysql.server start`