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

Pernyataan pembaruan MYSQL untuk mengisi ulang peringkat oleh setiap id

Ini mungkin bukan cara tercantik, tetapi Anda dapat dengan mudah melakukan sesuatu seperti:

set @rank = 0;
set @prev = 0;

select id, score, IF (id = @prev, @rank := @rank + 1, @rank := 1), @prev := id
from scores
order by id, score;

Saya kira Anda juga menginginkan pernyataan pembaruan, dan itu adalah:

set @rank = 0;
set @prev = 0;

update scores
set rank = IF(id = @prev, @rank := @rank + 1, @rank := 1),
id = (@prev := id)
order by id, score;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kunci asing beberapa kolom di MySQL?

  2. mysql bagaimana cara mengubah varchar (10) ke TIMESTAMP?

  3. Daftar Lengkap Lokal di MySQL

  4. mysqldump:Kesalahan 2020:Mendapat paket lebih besar dari byte 'max_allowed_packet' saat membuang tabel

  5. Bergabung dengan Tabel dengan kondisi substring