sql >> Base de Datos >  >> RDS >> Mysql

MySQL:SELECCIONE solo 2 filas de cada 'grupo'

Tienes la idea correcta. Sin embargo, MySQL no garantiza el orden de evaluación de las expresiones. Además, tienes un group by position en la subconsulta.

Así que creo que podrías querer:

SELECT . . .
FROM (SELECT name, surname, position, value, points, 
             (@num := if(@type = position, @num + 1,
                         if(@type := position, 1, 1)
                        )
             ) AS row_number
      FROM players p CROSS JOIN
           (SELECT @num := 0, @type := '') params
      WHERE (name LIKE '%$searchphrase%' OR surname LIKE '%$searchphrase%') AND
            value >= '$minvalue' AND value <= '$maxvalue'
      ORDER BY position
     )  x
WHERE x.row_number <= 2