Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara menghitung ulang bidang di GROUP

Saya pikir ini harus dilakukan:

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. Serangan injeksi yang berhasil dengan mysql_query, tetapi gagal dengan mysqli_query

  2. Bagaimana saya bisa menggabungkan AND dan OR dalam pernyataan SQL saya?

  3. Bagaimana cara mendapatkan bidang dengan nama dalam kueri Python?

  4. Tempat menyimpan file yang diunggah (suara, gambar, dan video)

  5. kesalahan:'Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (2)' -- Tidak ada /var/run/mysqld/mysqld.sock