Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQLdb python вмъкване на ред или увеличаване на броя на колоната, ако съществува

Ето един подход, използващ връзката, предоставена от @johnthexii (демо ) (използва само MySQL, така че не е специфичен за 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;

Ето разбивка на случващото се:username полето е маркирано като уникално, така че всеки опит за вмъкване на запис със съществуващо потребителско име ще се провали на ниво база данни. След това INSERT изразът има допълнително

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

Това казва на MySQL, че вместо да провали INSERT просто да вземе duplicates колона и увеличение с единица. Когато изпълните трите команди INSERT, ще видите два записа, stackoverflow.com има duplicates стойност 1, докато dba.stackexchange.com има duplicates стойност 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. Вмъкване на многоизмерен php масив в mysql база данни

  2. как да получите резултат въз основа на 10 минути интервал в mysql

  3. Не мога да изляза в PHP

  4. Между две таблици как се ИЗБИРА таблицата, където съществува id на конкретна стойност mysql

  5. Създаване на йерархичен JSON от MySQL резултати и PHP за дърво D3.js?