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
    

    フィドル




    1. sql地理からdbgeographyへ?

    2. アクセント記号やウムラウトなどの単語との照合mysql/php

    3. 東京のMariaDB

    4. SQLトリガー列名を変数に格納しているときにエラーが発生し、SQLトリガーのOLD.myvarに使用します