Seleccionar filas superiores por categoría en MySQL
Para recuperar un número limitado de filas de cada categoría en una tabla, puede utilizar funciones analíticas . Sin embargo, MySQL no ofrece estas funciones directamente. Sin embargo, es posible emularlas usando variables.
Emulación de funciones analíticas
La siguiente consulta MySQL emula la funcionalidad de funciones analíticas para seleccionar las 3 filas superiores para cada categoría :
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 Explicación
- La subconsulta selecciona todas las filas de la tabla TBL_ARTIKUJT e inicializa dos variables de sesión, @rownum y @category, para realizar un seguimiento de la clasificación y categoría actuales.
- la clasificación asignada a cada fila indica su posición dentro de su categoría. Cuando se encuentra una nueva categoría, la clasificación se restablece a 1.
- var_category se usa para almacenar la categoría para cada fila.
- La instrucción SELECT externa filtra la subconsulta, seleccionando solo filas con una clasificación menor o igual a 3.
Este método le permite implementar la funcionalidad deseada sin depender de funciones analíticas, que no son compatibles con MySQL.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3