Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MSQL:Làm cách nào để ghi đè mục nhập chỉ khi mục nhập mới cao hơn? khác tạo mục nhập mới

Tôi sẽ sử dụng insert .. on duplicate key update ... bản tường trình. Một cái gì đó như thế này:

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

name cột phải được lập chỉ mục là unique .

Tập lệnh thử nghiệm:

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);

Đầu ra của 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. GROUP_CONCAT có giới hạn

  2. Làm cách nào để kết nối bàn làm việc mysql với chạy mysql bên trong docker?

  3. Tạo ID dài duy nhất cho một chế độ xem trong MySql

  4. cách sắp xếp một phản hồi JSON dựa trên mối quan hệ cơ sở dữ liệu bằng cách sử dụng tài liệu hùng hồn

  5. Thay đổi kiểu dữ liệu cột trong MySQL mà không làm mất siêu dữ liệu khác (DEFAULT, NOTNULL ...)