Categorías: MySQL

Limitar y compensar la visualización de registros

Hasta ahora hemos realizado consultas que, aunque nos permiten filtrar datos, obtienen todos los registros que cumplen con ciertas condiciones. ¿Qué podemos hacer cuando la consulta devuelve muchos registros? o simplemente si queremos mostrar un número determinado de registros para poder realizar consultas como «las cinco publicaciones más vistas», «las tres publicaciones más votadas», «las últimas 10 publicaciones».

LIMIT
Con LIMIT podemos especificar la cantidad máxima de resultados que devuelve una consulta a un valor determinado.

-- Mostrar cinco publicaciones 

SELECT id, titulo FROM publicaciones  LIMIT 5;

Al establecer un valor después de LIMIT, estamos indicando que queremos esa cantidad máxima de resultados.

OFFSET
Se utiliza para indicar desplazamiento – número de registros que se van a dejar pasar – para que los resultados no se muestren desde el primer registro que se obtuvo.

-- Mostrar 5 publicaciones pero dejar pasar 
-- los primeros dos registros y comenzar a 
-- mostrar del tercer registro en adelante.

SELECT id, titulo FROM publicaciones  LIMIT 5 OFFSET 2;

LIMIT, OFFSET
Cuando utilizamos LIMIT podemos asignar dos parámetros. El primero indica el desplazamiento – el número de registros que vamos a dejar pasar – OFFSET y el segundo la cantidad de registros que se quieren visualizar – LIMIT -.

-- Misma consulta que la anterior.

SELECT id, titulo FROM publicaciones LIMIT 5 OFFSET 2;

-- Al utilizar LIMIT con dos parámetros nos ahorramos  
-- la palabra OFFSET. Esta notación puede ser confusa porque
-- los valores de LIMIT y OFFSET están invertidos.

SELECT id, titulo FROM publicaciones  LIMIT 2, 5;

Ordenar

Al utilizar LIMIT podemos utilizar ORDER BY para ordenar los registros ANTES de limitar la visualización.

-- Seleccionar id, titulo y usuario_id
-- de la tabla publicaciones
-- ordenar por el valor de la columna
-- usuario_id de manera descendente.
-- Mostrar cinco registros pero dejar
-- pasar el primer registro.

SELECT id, titulo, usuario_id 
FROM publicaciones 
ORDER BY usuario_id DESC 
LIMIT 5 OFFSET 1;

Filtrar

Al igual que con ORDER BY, podemos utilizar WHERE para filtrar los registros de la base de datos y, una vez obtenidos ordenarlos y limitarlos.

-- Seleccionar id, titulo y usuario_id
-- de la tabla publicaciones
-- donde el título no contenga
-- el término java.
-- Ordenar por el valor de la columna
-- usuario_id de manera ascendente.
-- Mostrar cinco registros pero dejar
-- pasar el primer registro.

SELECT id, titulo, usuario_id 
FROM publicaciones 
WHERE titulo NOT LIKE "%java%"
ORDER BY usuario_id ASC 
LIMIT 5 OFFSET 1;

Al utilizar LIMIT, OFFSET con ORDER BY y los operadores de comparación podemos realizar consultas para obtener registros más particulares.

eamexicano

Publicado por
eamexicano

Entradas recientes

Handbrake CLI

Ya que vimos como crear nuestros propios ajustes la siguiente tarea sería poder codificar nuestro(s)…

2 semanas hace

Crear ajustes personalizados en HandBrake

A veces, al codificar videos con HandBrake, utilizamos ajustes personalizados, los cuales, tenemos que volver…

2 semanas hace

Manipular registros de tabla con referencia a sí misma

En ocasiones cuando queremos manipular - borrar o editar - los registros de una tabla…

5 años hace

Organización de Proyectos

Si ya has hecho sitios o aplicaciones web es probable que tengas una manera de…

5 años hace

LAMP – Funcionamiento

En la publicación de LAMP Stack vimos los componentes de esta plataforma y las tareas…

5 años hace

Inyección SQL

Una inyección de SQL es una vulnerabilidad de las aplicaciones web en la cual el…

5 años hace

Esta web usa cookies.