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

MySQL - Dapatkan penghitung untuk setiap nilai duplikat

Sayangnya, MySQL tidak memiliki fungsi windowing yang Anda perlukan. Jadi, Anda harus menggunakan sesuatu seperti ini:

Kueri Terakhir

select data, group_row_number, overall_row_num
from
(
  select data,
        @num := if(@data = `data`, @num + 1, 1) as group_row_number,
        @data := `data` as dummy, overall_row_num
  from
  (
    select data, @rn:[email protected]+1 overall_row_num
    from yourtable, (SELECT @rn:=0) r
  ) x
  order by data, overall_row_num
) x
order by overall_row_num

lihat SQL Fiddle dengan Demo

Penjelasan:

Pertama, pilih dalam, ini menerapkan row_number tiruan ke semua catatan di tabel Anda (Lihat SQL Fiddle dengan Demo ):

select data, @rn:[email protected]+1 overall_row_num
from yourtable, (SELECT @rn:=0) r

Bagian kedua dari kueri, bandingkan setiap baris di tabel Anda dengan baris berikutnya untuk melihat apakah nilainya sama, jika tidak, mulailah group_row_number lebih (lihat SQL Fiddle dengan Demo ):

select data,
      @num := if(@data = `data`, @num + 1, 1) as group_row_number,
      @data := `data` as dummy, overall_row_num
from
(
  select data, @rn:[email protected]+1 overall_row_num
  from yourtable, (SELECT @rn:=0) r
) x
order by data, overall_row_num

Pilihan terakhir, mengembalikan nilai yang Anda inginkan dan menempatkannya kembali dalam urutan yang Anda minta:

select data, group_row_number, overall_row_num
from
(
  select data,
        @num := if(@data = `data`, @num + 1, 1) as group_row_number,
        @data := `data` as dummy, overall_row_num
  from
  (
    select data, @rn:[email protected]+1 overall_row_num
    from yourtable, (SELECT @rn:=0) r
  ) x
  order by data, overall_row_num
) x
order by overall_row_num


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ini cara aman untuk mengonversi tabel MySQL dari latin1 ke utf-8?

  2. Impor file SQL ke mysql

  3. Bagaimana cara mengubah tipe data Kolom Tabel di lebih dari 1 kolom?

  4. Variabel yang ditentukan pengguna MySQL dalam klausa WHERE

  5. Apa cara terbaik untuk menyisipkan dan memperbarui tabel baris tunggal di MySQL?