Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MSQL:Bagaimana cara menimpa entri hanya jika yang baru lebih tinggi? lain buat entri baru

Saya akan menggunakan insert .. on duplicate key update ... penyataan. Sesuatu seperti ini:

insert into highscore set
    name = :name,
    score = :new_score
on duplicate key update
    score = greatest(score, :new_score)

name kolom harus diindeks sebagai unique .

Skrip pengujian:

create table player (
    name varchar(32) primary key,
    score int not null default 0
);

-- create new players
insert into player set name = 'foo', score = 100
    on duplicate key update score = greatest(score, 100);
insert into player set name = 'bar', score = 100
    on duplicate key update score = greatest(score, 100);
insert into player set name = 'baz', score = 100
    on duplicate key update score = greatest(score, 100);

-- update score of existing player
insert into player set name = 'bar', score = 200
    on duplicate key update score = greatest(score, 200);

Output dari select * from player :

+------+-------+
| name | score |
+------+-------+
| bar  |   200 |
| baz  |   100 |
| foo  |   100 |
+------+-------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah nama kolom secara dinamis dalam pernyataan PDO

  2. Pengguna Multilevel di tabel Database

  3. Mencadangkan Database di MySQL menggunakan C#

  4. Keamanan pegas beralih ke otentikasi Ldap dan otoritas basis data

  5. bagaimana saya bisa mengekspor database mysql menggunakan ssh?