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

mysql में रिकॉर्ड के समूह के लिए एक ही सीरियल नंबर कैसे दें?

आपके समूहों को code = 100 . से शुरू करके परिभाषित किया गया है . ये थोड़ा पेचीदा है. MySQL 8+ में, आप समूहों को परिभाषित करने के लिए विंडो फ़ंक्शन का उपयोग कर सकते हैं और फिर row_number() serial_number असाइन करने के लिए :

select c.*, 
       row_number() over (partition by grp order by id) as serial_number
from (select c.*,
             sum( code = 100 ) over (order by id) as grp
      from carts c
     ) c;

यह MySQL के पुराने संस्करणों में बहुत अधिक जटिल है।

आप एक सबक्वेरी का उपयोग करके समूह की पहचान कर सकते हैं:

select c.*,
       (select count(*)
        from carts c2
        where c2.id <= c.id and c2.code = 100
       ) as grp
from carts c;

फिर आप अपनी इच्छित जानकारी प्राप्त करने के लिए चरों का उपयोग कर सकते हैं:

select c.*,
       (@rn := if(@g = grp, @rn + 1,
                  if(@g := grp, 1, 1)
                 )
       ) as serial_number
from (select c.*,
             (select count(*)
              from carts c2
              where c2.id <= c.id and c2.code = 100
             ) as grp
      from carts c
      order by grp, id
     ) c cross join
     (select @g := -1, @rn := 0) params;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL प्रतिबद्ध और लेनदेन

  2. Python के माध्यम से दूरस्थ MySQL डेटाबेस से कनेक्ट करें

  3. दो तालिकाओं से दो स्तंभों को एक में मिलाएं

  4. mysqldump के साथ mysql डेटाबेस बैकअप

  5. PHP पीडीओ एकाधिक चयन क्वेरी लगातार अंतिम पंक्ति को छोड़ रही है