Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

प्रत्येक आईडी द्वारा रैंकिंग को बैकफिल करने के लिए MYSQL अद्यतन विवरण

यह सबसे सुंदर तरीका नहीं हो सकता है, लेकिन आप आसानी से कुछ ऐसा कर सकते हैं:

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;

मुझे लगता है कि आप अपडेट स्टेटमेंट भी चाहते हैं, और वह होगा:

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. सबस्ट्रिंग और charindex के साथ SQL सिंटैक्स त्रुटि

  2. mysql मिनट जहां बयान

  3. mysql मर चुका है लेकिन सबसिस लॉक हो गया है

  4. कैसे mysql में स्ट्रिंग से केवल अंक प्राप्त करने के लिए?

  5. यदि मौजूद है तो MySQLdb अजगर कॉलम पर पंक्ति या वेतन वृद्धि की संख्या डालें