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

Consulta MySql:Seleccione las 3 primeras filas de la tabla para cada categoría

LIMIT solo detiene la cantidad de resultados que devuelve la instrucción. Lo que está buscando generalmente se llama funciones de análisis/ventana/clasificación, que MySQL no admite pero puede emular usando variables:

SELECT x.*
  FROM (SELECT t.*,
               CASE 
                 WHEN @category != t.category THEN @rownum := 1 
                 ELSE @rownum := @rownum + 1 
               END AS rank,
               @category := t.category AS var_category
          FROM TBL_ARTIKUJT t
          JOIN (SELECT @rownum := NULL, @category := '') r
      ORDER BY t.category) x
 WHERE x.rank <= 3

Si no cambia SELECT x.* , el conjunto de resultados incluirá el rank y var_category valores:tendrá que especificar las columnas que realmente desea si este no es el caso.