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

MySQL - प्रत्येक डुप्लिकेट मान के लिए एक काउंटर प्राप्त करें

दुर्भाग्य से, MySQL में विंडोिंग फ़ंक्शन नहीं हैं, जिसकी आपको आवश्यकता होगी। तो आपको कुछ इस तरह इस्तेमाल करना होगा:

अंतिम प्रश्न

select data, group_row_number, overall_row_num
from
(
  select data,
        @num := if(@data = `data`, @num + 1, 1) as group_row_number,
        @data := `data` as dummy, overall_row_num
  from
  (
    select data, @rn:[email protected]+1 overall_row_num
    from yourtable, (SELECT @rn:=0) r
  ) x
  order by data, overall_row_num
) x
order by overall_row_num

देखें SQL Fiddle with Demo

स्पष्टीकरण:

सबसे पहले, आंतरिक चयन करें, यह एक नकली row_number लागू होता है अपनी तालिका के सभी रिकॉर्ड के लिए (देखें SQL Fiddle with Demo ):

select data, @rn:[email protected]+1 overall_row_num
from yourtable, (SELECT @rn:=0) r

क्वेरी का दूसरा भाग, आपकी तालिका में प्रत्येक पंक्ति की तुलना अगले एक से करता है, यह देखने के लिए कि क्या इसका मान समान है, यदि यह नहीं है तो group_row_number प्रारंभ करें ओवर (देखें SQL Fiddle with Demo ):

select data,
      @num := if(@data = `data`, @num + 1, 1) as group_row_number,
      @data := `data` as dummy, overall_row_num
from
(
  select data, @rn:[email protected]+1 overall_row_num
  from yourtable, (SELECT @rn:=0) r
) x
order by data, overall_row_num

अंतिम चयन, आपके इच्छित मान लौटाता है और आपके द्वारा अनुरोधित क्रम में उन्हें वापस रखता है:

select data, group_row_number, overall_row_num
from
(
  select data,
        @num := if(@data = `data`, @num + 1, 1) as group_row_number,
        @data := `data` as dummy, overall_row_num
  from
  (
    select data, @rn:[email protected]+1 overall_row_num
    from yourtable, (SELECT @rn:=0) r
  ) x
  order by data, overall_row_num
) x
order by overall_row_num


  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 कार्यक्षेत्र:127.0.0.1' (10061) त्रुटि पर MySQL सर्वर से कनेक्ट नहीं हो सकता

  2. Laravel . में डेटा को प्रभावित किए बिना तालिका योजना अद्यतन कर रहा है

  3. Mysql में लूप के साथ किसी अन्य तालिका से डेटा डालें

  4. रेल कनेक्शन समस्या पर रूबी

  5. किसी विशेष तिथि के साथ रिकॉर्ड का चयन करने के लिए MySQL क्वेरी