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

Indsæt flere data til MySQL og opdater, hvis de findes

Det eneste, der skal til, er et indekssammenstød, der ville krænke en duplikat for at opdatere rækken og ikke for at oprette en ny række. Indekssammenstødet kan være en primær nøgle, en på et andet indeks, det være sig enkelt kolonne eller sammensat indeks på tværs af flere kolonner.

Indrømmet, at nedenstående er ret lamt, men så fantasifuldt, som jeg kan gøre lige nu.

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. Hvordan bruger man alfanumeriske felter med BETWEEN-sætning i Mysql?

  2. Hvordan skriver man flere forfattere ned til databasen i en simpel bogtabel?

  3. Indsæt data via en funktion med tabelværdi i SQL Server

  4. Skal jeg frigøre mysql-resultatet efter at have gemt det?