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

GROUP पर किसी फ़ील्ड की पुनर्गणना कैसे करें

मुझे लगता है कि इसे यह करना चाहिए:

INSERT INTO mapped (f1_new, f2_new, fk_new)
SELECT f1_new, f2_new, fk_new from (
    SELECT f1_new, @f2 := if(f1_new = @prev_f1, @f2+1, 0) f2_new, fk_new, @prev_f1 := f1_new
    FROM (select f1 AS f1_new, CASE WHEN fk IN (100, 200) THEN 'A'
                                    WHEN fk in (300, 400) THEN 'B'
                                    WHEN fk = 500 THEN 'C'
                               END AS fk_new
          FROM origin
          GROUP BY f1_new, fk_new
          ORDER BY f1_new, fk_new) new,
         (SELECT @f2 := NULL, @prev_f1 := NULL) vars
    ) x

FIDDLE




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php में mysql टेबल को कैसे लॉक करें?

  2. चयनित माता-पिता का ट्री मेनू प्रदर्शित करें

  3. codeigniter में where_in से सिंगल कोट्स हटाएं

  4. django ORM कच्चे SQL की तुलना में इतना धीमा क्यों है

  5. प्राथमिक और विदेशी कुंजी पर अनुक्रमणिका