sql >> Database >  >> RDS >> Mysql

Voeg meerdere gegevens toe aan MySQL en update indien aanwezig

Het enige dat nodig is, is één indexclash die een duplicaat schendt voor de rij die moet worden bijgewerkt, en niet voor het maken van een nieuwe rij. De indexclash kan een primaire sleutel zijn, een sleutel op een andere index, of het nu een enkele kolom is of een samengestelde index over meerdere kolommen.

Toegegeven, het onderstaande is nogal flauw, maar zo fantasierijk als ik nu kan doen.

create table user
(
    id int auto_increment primary key,
    userName varchar(20) not null,
    friendCount int not null,
    unique key(userName)
);

insert user(userName,friendCount) values('Jason7',0) on duplicate key update friendCount=friendCount+1;
select * from user;
+----+----------+-------------+
| id | userName | friendCount |
+----+----------+-------------+
|  1 | Jason7   |           0 |
+----+----------+-------------+

insert user(userName,friendCount) values('Fred',0) on duplicate key update friendCount=friendCount+1;
select * from user;
+----+----------+-------------+
| id | userName | friendCount |
+----+----------+-------------+
|  1 | Jason7   |           0 |
|  2 | Fred     |           0 |
+----+----------+-------------+

insert user(userName,friendCount) values('Fred',0) on duplicate key update friendCount=friendCount+1;
+----+----------+-------------+
| id | userName | friendCount |
+----+----------+-------------+
|  1 | Jason7   |           0 |
|  2 | Fred     |           1 |
+----+----------+-------------+



  1. Nieuwe installatie van python 3.7 / django 2.2.1 herkent niet dat mysqlclient is geïnstalleerd

  2. oracle jdbc driver versie waanzin

  3. Een functie met tabelwaarde maken in SQL Server

  4. Dynamisch selectievakjes maken