sql >> Databáze >  >> RDS >> Mysql

Vložit více dat do MySQL a aktualizovat, pokud existují

Stačí jedna kolize indexu, která by porušila duplikát pro řádek, který má být aktualizován, a nikoli pro vytvoření nového řádku. Střet indexu může být primární klíč, jeden na druhém indexu, ať už jde o jeden sloupec nebo složený index ve více sloupcích.

Je pravda, že níže uvedené je poněkud chabé, ale tak nápadité, jak to právě teď dokážu.

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. Pokud je PostgreSQL count(*) vždy pomalý, jak stránkovat složité dotazy?

  2. PayPal IPN neaktualizuje databázi MySQL

  3. Transformace podmíněného rozdělení:Exportujte data ze serveru SQL Server do databází Oracle a MySQL

  4. Jak uložit prázdnou hodnotu jako Integerfield