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

Inserisci più dati in MySQL e aggiorna se esistente

Tutto ciò che serve è un conflitto di indici che violerebbe un duplicato per l'aggiornamento della riga e non per la creazione di una nuova riga. L'interferenza dell'indice può essere una chiave primaria, una su un altro indice, che si tratti di una singola colonna o di un indice composto su più colonne.

Certo, quanto segue è piuttosto zoppo, ma è fantasioso come posso fare in questo momento.

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 |
+----+----------+-------------+