sql >> Database >  >> RDS >> Mysql

Groepeer achtereenvolgens waarden in MySQL en voeg een id toe aan dergelijke groepen

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

BEWERKEN

Als je er maar 4 per groep wilt, voeg dan een rijnummervariabele toe:

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. 3 manieren om alle tabellen te retourneren ZONDER een primaire sleutel in SQL Server

  2. Een string zoeken in databases van SQL Server

  3. Hoe configureer ik Rails voor wachtwoordloze toegang tot een externe database?

  4. Hoe Ruby regex specificeren bij gebruik van Active Record in Rails?