sql >> Databasteknik >  >> RDS >> Mysql

Gruppera efter varandra värden i MySQL och lägg till ett id till sådana grupper

SELECT language,id,g
FROM (
  SELECT language,id,
    CASE WHEN [email protected]+1 THEN @n ELSE @n:[email protected]+1 END AS g,
    @lastid := id As b
  FROM
    t, (SELECT @n:=0) r
  ORDER BY
    id
) s

REDIGERA

Om du bara vill ha 4 per grupp lägg till en radnummervariabel:

SELECT language,id,g,rn
FROM (
  SELECT language,id,
    CASE WHEN [email protected]+1 THEN @n ELSE @n:[email protected]+1 END AS g,
   @rn := IF(@lastid+1 = id, @rn + 1, 1) AS rn,
    @lastid := id As dt
  FROM
    t, (SELECT @n:=0) r
  ORDER BY
    id
) s
Where rn <=4

FIDDLE



  1. mysql TIME_WAIT; för många anslutningsproblem

  2. PostgreSQL-index används inte för fråga om IP-intervall

  3. Hur man formaterar nummer med . som tusenavgränsare och , som decimalavgränsare?

  4. Hur kan jag söka i alla kolumner i en tabell?