Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL - Вземете брояч за всяка дублирана стойност

За съжаление MySQL няма функции за прозорци, което е това, от което се нуждаете. Така че ще трябва да използвате нещо подобно:

Окончателна заявка

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

вижте SQL Fiddle с демонстрация

Обяснение:

Първо, вътрешен избор, това прилага макет row_number към всички записи във вашата таблица (Вижте SQL Fiddle с демонстрация ):

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

Втората част на заявката сравнява всеки ред във вашата таблица със следващия, за да види дали има същата стойност, ако не, тогава стартира group_row_number над (вижте SQL Fiddle с демонстрация ):

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

Последният избор връща желаните от вас стойности и ги поставя обратно в реда, който сте поискали:

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. Преобразувайте JSON масив в MySQL в редове

  2. JSON кодиране на MySQL резултати

  3. MySQL:#1075 - Неправилна дефиниция на таблица; автоматично инкремент спрямо друг ключ?

  4. Може ли външният ключ да действа като първичен ключ?

  5. Измерване на онлайн времето на уебсайта