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

Избиране на групи от последователни записи с общ атрибут?

Можете ли да опитате това? Можете да тествате тук http://www.sqlfiddle.com/#!2/57967 /12 .

Select grp_new, group_concat(ord)
From (
   Select ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
  From tab, (SELECT @seq := 0, @prev := '') AS init
  Order by ord
) x
Group by grp_new, seq;

Основната идея е генериране на същия seq за същата последователна група, както следва.

Select
   ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
From tab, (SELECT @seq := 0, @prev := '') AS init
Order by ord

след това накрая групиране GROUP BY grp, seq които могат да разграничат всяка последователна група, дори ако имат еднакъв grp .

РЕДАКТИРАНЕ:За да получите точно резултата в примера:

Select grp_new, group_concat(ord order by ord)
From (
  Select ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
  From tab, (SELECT @seq := 0, @prev := '') AS init
  Order by ord
) x
Group by seq


  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 сортиране по изчисление

  2. Как да изпращам данни от android към mysql сървър?

  3. Разликата в месеците между датите в MySQL

  4. Оставете само първите 50 записа в SQL базата данни и изтрийте останалите

  5. Context.User е NULL в Application_AuthenticateRequest чрез windows auth в приложението Asp.net MVC