Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przeliczyć pole na GRUPIE

Myślę, że to powinno wystarczyć:

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

SKRZYPKI




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używasz LIMIT w GROUP BY, aby uzyskać N wyników na grupę?

  2. Czy w Rails Migration (MySQL) możesz określić, jaka powinna być pozycja nowej kolumny?

  3. Jak wygenerować numerację sekwencyjną w wordpressie

  4. Bezpieczne połączenie Propel, zdalne MySQL

  5. SSIS i MySQL — problem z ogranicznikiem nazwy tabeli