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

Cómo limitar filas en un conjunto de resultados de MySQL

Problema:

Le gustaría limitar el número de filas en un conjunto de resultados en MySQL.

Ejemplo:

Nuestra base de datos tiene una tabla llamada student con datos en las columnas id , first_name , last_name y age .

id nombre apellido edad
1 Esteban Watson 25
2 Lisa Anderson 19
3 Alicia Molinero 19
4 María Marrón 25
5 Lucía Watson 25
6 Miguel Jackson 22

Seleccionemos los nombres completos y las edades de los estudiantes, pero limitemos las filas devueltas a tres.

Solución:

SELECT first_name, last_name, age
FROM student
LIMIT 3;

Este es el resultado de la consulta:

id nombre apellido edad
1 Esteban Watson 25
2 Lisa Anderson 19
3 Alicia Molinero 19

Discusión:

La cláusula LIMIT limita el número de filas en el conjunto de resultados. Se utiliza en la sentencia SELECT, normalmente al final de la sentencia. (Incluso ORDEN POR debe aparecer antes de LIMIT.)

El único argumento requerido es el número de filas a mostrar. En nuestro ejemplo, LIMIT 3 produjo un conjunto de resultados que contenía tres filas. A menos que especifique lo contrario con el argumento OFFSET, esta función siempre devolverá el primer n filas que cumplen con los requisitos de la consulta.

El argumento OFFSET opcional de LIMIT se coloca antes del argumento que indica el número de filas devueltas. Indica la posición de la primera fila devuelta por LIMIT (es decir, '0' es la primera fila, 1 es la segunda fila, etc.). El desplazamiento y el número de filas están separados por una coma.

La consulta devuelve los mismos registros que la consulta anterior porque el desplazamiento es cero. (Cero es el valor de compensación predeterminado).

SELECT first_name, last_name, age
FROM student
LIMIT 0, 3;

En estas consultas, las filas de resultados están desordenadas. Si desea seleccionar tres filas de un conjunto de resultados ordenados, utilice ORDENAR POR:

SELECT first_name, last_name, age
FROM student
ORDER BY age DESC, last_name, first_name
LIMIT 1,3;

Aquí, primero ordenamos las filas por edad (descendente), luego por apellido y luego por nombre. Usamos el valor de compensación para comenzar en la segunda fila devuelta y limitar los resultados a tres filas:

nombre apellido edad
Lucía Watson 25
Esteban Watson 25
Miguel Jackson 22

Esta consulta primero ordena las filas según la columna de edad en orden descendente. Luego ordena por last_name y first_name en orden ascendente. Si miras la tabla, verás que los alumnos mayores (Steven, Lucy, Mary) tienen 25 años. Sin embargo, Mary se omite porque ella es la primera fila y el desplazamiento es 1 (es decir, estamos comenzando con la segunda fila). Lucy ahora es la primera porque su primer nombre viene antes que el de Steven. (Steven y Lucy tienen el mismo apellido, por lo que su orden está determinado por el primer nombre). Michael tiene 22 años, lo que lo convierte en el siguiente estudiante de mayor edad y el último de las tres filas devueltas.