4.1 LÍMITE
Si espera que su consulta SQL devuelva demasiados datos, puede limitar el número máximo por adelantado. Después de todo, las tablas pueden contener miles o incluso millones de filas.
SQL hace que sea muy fácil limitar el número de filas en el resultado de una consulta mediante el uso de LIMIT
. Esta palabra clave se usa al final de la consulta SQL y se ve así:
LIMIT quantity
Escribamos una consulta en la tabla de productos, que contiene una lista de los productos de nuestra tienda. Pero como tenemos una tienda muy exitosa y vendemos muchos productos, queremos obtener solo las primeras 10 líneas de la respuesta. Así es como se vería esa solicitud:
SELECT * FROM product
LIMIT 10
Y obtenemos el siguiente resultado de la consulta:
identificación | nombre | marca | precio | contar |
---|---|---|---|---|
1 | Mesa | IKEA | 20.00 | 15 |
2 | Silla | IKEA | 5.00 | 45 |
3 | Sofá | IKEA | 80.00 | 10 |
4 | Cama | IKEA | 75.00 | 10 |
5 | Armario | el bosco | 125.00 | 15 |
6 | Estante | Estante | 25.00 | 114 |
7 | TELEVISOR | LG | 350.00 | 4 |
8 | Lámpara | LG | 15.00 | 100 |
9 | Vestidor | IKEA | 99.00 | 10 |
10 | Lámina | el bosco | 199.00 | 10 |
Ahora solicitaremos solo las primeras 5 filas. Así es como se vería esa solicitud:
SELECT * FROM product
LIMIT 5
Obtenemos el siguiente resultado de la consulta:
identificación | nombre | marca | precio | contar |
---|---|---|---|---|
1 | Mesa | IKEA | 20.00 | 15 |
2 | Silla | IKEA | 5.00 | 45 |
3 | Sofá | IKEA | 80.00 | 10 |
4 | Cama | IKEA | 75.00 | 10 |
5 | Armario | el bosco | 125.00 | 15 |
4.2 DESPLAZAMIENTO
La última vez aprendimos cómo limitar el número de líneas en la respuesta del servidor. Y ahora, en lugar de miles de filas de la tabla de productos, podemos obtener las primeras 10 filas y mostrárselas al usuario. es perfectamente Pero, ¿cómo mostramos las segundas 10 filas? ¿Y el tercero?
Si escribimos LIMIT 20
, o LIMIT 30
, ¿no devolverá el servidor 20 y 30 filas respectivamente?
Es para este caso que SQL tiene una palabra clave especial OFFSET
con la que puedes pedirle al servidor que salte N líneas en su respuesta. Esta palabra clave se usa al final de la consulta SQL (después de LIMIT
) y tiene el siguiente aspecto:
OFFSET quantity
Escribamos una consulta en la tabla de productos e intentemos obtener los registros 11 a 15. En otras palabras, le estamos pidiendo al servidor que nos devuelva 5 filas, pero omita primero las primeras 10 filas de la respuesta. Así es como se vería esa solicitud:
SELECT * FROM product
LIMIT 5
OFFSET 10
Obtenemos el siguiente resultado de la consulta:
identificación | nombre | marca | precio | contar |
---|---|---|---|---|
once | Sillón | el bosco | 44.00 | 8 |
12 | maceta | flor inteligente | 99.00 | 9 |
13 | Pararse | IKEA | 100.00 | 10 |
El servidor devolvió solo 3 filas, lo que significa que había 13 filas en total en nuestra tabla. El servidor omitió los primeros 10 y devolvió los siguientes 5.
4.3 SELECCIONAR DISTINTO
Otra palabra clave útil es DISTINCT
. Se utiliza cuando hay registros duplicados en la tabla y queremos eliminar los duplicados.
¿De dónde vienen los duplicados en nuestra tabla? Puede que no haya duplicados en la tabla, pero como resultado de la consulta, es fácil. Escribamos una consulta que devuelva las marcas de todos los productos que vendemos. Así es como se vería esa solicitud:
SELECT brand FROM product
Obtenemos el siguiente resultado de la consulta:
marca |
---|
IKEA |
IKEA |
IKEA |
IKEA |
el bosco |
el bosco |
LG |
LG |
IKEA |
el bosco |
el bosco |
flor inteligente |
IKEA |
Es fácil ver que hay filas duplicadas en esta tabla. Es para asegurarse de que no haya duplicados y necesita usar la palabra clave DISTINCT
. Así es como se verá la solicitud corregida:
SELECT DISTINCT brand
FROM product
Obtenemos el siguiente resultado de la consulta:
marca |
---|
IKEA |
el bosco |
LG |
flor inteligente |
Mucho mejor. ¿No es? ;)
4.4 ORDENAR POR
Y finalmente llegamos a la clasificación . Para ordenar los resultados de una consulta, debe utilizar la palabra clave ORDER BY
. Técnicamente, estas son dos palabras, pero la esencia no es importante. Dos palabras, un operador.
Debe escribirse después de la palabra clave WHERE
, pero antes de LIMIT
y OFFSET
. Si escribe ORDER BY
después de LIMIT
, entonces el servidor SQL simplemente le devolverá un error.
En general, este operador se ve así:
ORDER BY column order
Donde columna es el nombre de la columna en la tabla/resultado de clasificación. Y el orden es el orden de clasificación.
El orden de clasificación puede ser de tres tipos:
ASC
(de Ascendente) - ascendente;DESC
(de Descendente) - descendente;- No especificado - se utilizará
ASC
Escribamos una consulta que devolverá una lista de productos ordenados por precio en orden ascendente. Así es como se vería esa solicitud:
SELECT * FROM product
ORDER BY price ASC
LIMIT 10
Obtenemos el siguiente resultado de la consulta:
identificación | nombre | marca | precio | contar |
---|---|---|---|---|
2 | Silla | IKEA | 5.00 | 45 |
8 | Lámpara | LG | 15.00 | 100 |
1 | Mesa | IKEA | 20.00 | 15 |
6 | Estante | el bosco | 25.00 | 114 |
once | Sillón | el bosco | 44.00 | 8 |
4 | Cama | IKEA | 75.00 | 10 |
3 | Sofá | IKEA | 80.00 | 10 |
12 | maceta | flor inteligente | 99.00 | 9 |
9 | Vestidor | IKEA | 99.00 | 10 |
13 | Pararse | IKEA | 100.00 | 10 |
Obtendremos el mismo resultado si no especificamos el orden de clasificación; omitiremos la palabra ASC
.
4.5 ORDENAR POR varias columnas
El operador ORDER BY
le permite ordenar el resultado por varias columnas. Esto puede ser muy útil cuando la primera columna tiene muchos elementos duplicados. La forma general de este operador es la siguiente:
ORDER BY column 1 order 1, column 2 order 2, column 3 order 3
En otras palabras, si después de ordenar por la primera columna tiene varios valores idénticos cerca, entonces se ordenan por la segunda columna, y así sucesivamente.
Escribamos una consulta que ordenará nuestros productos por marca y para productos con la misma marca, en orden descendente de su número. Así es como se vería esa solicitud:
SELECT * FROM product
ORDER BY brand ASC, count
DESC
Obtenemos el siguiente resultado de la consulta:
identificación | nombre | marca | precio | contar |
---|---|---|---|---|
6 | Estante | el bosco | 25.00 | 114 |
5 | Armario | el bosco | 125.00 | 15 |
10 | Lámina | el bosco | 199.00 | 10 |
once | Sillón | el bosco | 44.00 | 8 |
2 | Silla | IKEA | 5.00 | 45 |
1 | Mesa | IKEA | 20.00 | 15 |
9 | Vestidor | IKEA | 99.00 | 10 |
13 | Pararse | IKEA | 100.00 | 10 |
4 | Cama | IKEA | 75.00 | 10 |
3 | Sofá | IKEA | 80.00 | 10 |
8 | Lámpara | LG | 15.00 | 100 |
7 | TELEVISOR | LG | 350.00 | 4 |
12 | maceta | flor inteligente | 99.00 | 9 |
Mire de cerca la tabla: sus filas están ordenadas por nombre de marca (orden alfabético) y las filas con el mismo nombre de marca están ordenadas por número de producto en orden descendente (última columna).
GO TO FULL VERSION