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

cara memberikan nomor seri yang sama untuk grup catatan di mysql

Grup Anda ditentukan dengan memulai dengan code = 100 . Ini sedikit rumit. Di MySQL 8+, Anda dapat menggunakan fungsi jendela untuk mendefinisikan grup dan kemudian row_number() untuk menetapkan serial_number :

select c.*, 
       row_number() over (partition by grp order by id) as serial_number
from (select c.*,
             sum( code = 100 ) over (order by id) as grp
      from carts c
     ) c;

Ini jauh lebih rumit di versi MySQL sebelumnya.

Anda dapat mengidentifikasi grup menggunakan subkueri:

select c.*,
       (select count(*)
        from carts c2
        where c2.id <= c.id and c2.code = 100
       ) as grp
from carts c;

Anda kemudian dapat menggunakan variabel untuk mendapatkan informasi yang Anda inginkan:

select c.*,
       (@rn := if(@g = grp, @rn + 1,
                  if(@g := grp, 1, 1)
                 )
       ) as serial_number
from (select c.*,
             (select count(*)
              from carts c2
              where c2.id <= c.id and c2.code = 100
             ) as grp
      from carts c
      order by grp, id
     ) c cross join
     (select @g := -1, @rn := 0) params;


  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 LOAD DATA INFILE dengan ON DUPLICATE KEY UPDATE

  2. Bagaimana cara menginstal paket MySQLdb? (ImportError:Tidak ada modul bernama setuptools)

  3. Apa alternatif klausa LIMIT di JPQL?

  4. mysql_connect VS mysql_pconnect

  5. Apa string koneksi driver MySQL JDBC?