sql >> Databasteknik >  >> RDS >> Mysql

MySQLdb python infoga rad eller öka antalet kolumner om det finns

Här är ett tillvägagångssätt med hjälp av länken som @johnthexii gav (demo ) (den använder bara MySQL, så den är inte Python-specifik)

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;

Här är en sammanfattning av vad som händer:username fältet är markerat som unikt så varje försök att infoga en post med ett befintligt användarnamn kommer att misslyckas på databasnivå. Sedan INSERT uttalandet har en extra

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

Detta talar om för MySQL att istället för att misslyckas med INSERT att bara ta duplicates kolumn och öka med en. När du kör de tre INSERT-kommandona kommer du att se två poster, stackoverflow.com har en duplicates värdet 1, medan dba.stackexchange.com har en duplicates värde 0.




  1. Funktionen tar evigheter att köra för ett stort antal poster

  2. Hur man partitionerar en tabell med ett LIKE-kriterium i Mysql

  3. mysql ordning efter namn asc ingore leder "the"

  4. Vanligt tabelluttryck i MySQL