Resumen :en este tutorial, aprenderá cómo ordenar un conjunto de resultados de una consulta usando SQLite ORDER BY
cláusula.
Introducción a SQLite ORDER BY
cláusula
SQLite almacena datos en las tablas en un orden no especificado. Significa que las filas de la tabla pueden estar o no en el orden en que fueron insertadas.
Si utiliza el SELECT
para consultar datos de una tabla, no se especifica el orden de las filas en el conjunto de resultados.
Para ordenar el conjunto de resultados, agrega el ORDER BY
cláusula al SELECT
declaración de la siguiente manera:
SELECT
select_list
FROM
table
ORDER BY
column_1 ASC,
column_2 DESC;
Code language: SQL (Structured Query Language) (sql)
El ORDER BY
la cláusula viene después del FROM
cláusula. Le permite ordenar el conjunto de resultados en función de una o más columnas en orden ascendente o descendente.
En esta sintaxis, coloca el nombre de la columna por la que desea ordenar después de ORDER BY
cláusula seguida del ASC
o DESC
palabra clave.
- El
ASC
palabra clave significa ascender. - Y el
DESC
la palabra clave significa descender.
Si no especifica el ASC
o DESC
palabra clave, SQLite ordena el conjunto de resultados usando el ASC
opción. En otras palabras, ordena el conjunto de resultados en orden ascendente de forma predeterminada.
En caso de que desee ordenar el conjunto de resultados por varias columnas, use una coma (,) para separar dos columnas. El ORDER BY
La cláusula ordena las filas usando columnas o expresiones de izquierda a derecha. En otras palabras, el ORDER BY
La cláusula ordena las filas usando la primera columna de la lista. Luego, ordena las filas ordenadas usando la segunda columna, y así sucesivamente.
Puede ordenar el conjunto de resultados usando una columna que no aparece en la lista de selección de SELECT
cláusula.
SQLite ORDER BY
ejemplo de cláusula
Tomemos las tracks
tabla en la base de datos de muestra para la demostración.
Supongamos que desea obtener datos de las columnas de nombre, milisegundos e ID de álbum, utiliza la siguiente declaración:
SELECT
name,
milliseconds,
albumid
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
El SELECT
sentencia que no utiliza ORDER BY
cláusula devuelve un conjunto de resultados que no está en ningún orden.
Suponga que desea ordenar el conjunto de resultados en función de AlbumId
columna en orden ascendente, utilice la siguiente declaración:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
El conjunto de resultados ahora está ordenado por AlbumId
columna en orden ascendente como se muestra en la captura de pantalla.
SQLite usa ASC
de forma predeterminada, por lo que puede omitirlo en la declaración anterior de la siguiente manera:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid;
Pruébalo
Suponga que desea ordenar el resultado ordenado (por AlbumId
) arriba por los Milliseconds
columna en orden descendente. En este caso, debe agregar los Milliseconds
columna a ORDER BY
cláusula de la siguiente manera:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC,
milliseconds DESC;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
SQLite ordena las filas por AlbumId
columna en orden ascendente primero. Luego, ordena el conjunto de resultados ordenados por Milliseconds
columna en orden descendente.
Si miras las pistas del álbum con AlbumId
1, encuentra que el orden de las pistas cambia entre las dos declaraciones.
SQLite ORDER BY
con la posición de la columna
En lugar de especificar los nombres de las columnas, puede usar la posición de la columna en ORDER BY
cláusula.
Por ejemplo, la siguiente declaración ordena las pistas tanto por albumid
(tercera columna) y milliseconds
(2ª columna) en orden ascendente.
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
3,2;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
El número 3 y 2 se refiere al AlbumId
y Milliseconds
en la lista de columnas que aparece en SELECT
cláusula.
Ordenar NULL
En el mundo de las bases de datos, NULL es especial. Indica que la información falta o los datos no son aplicables.
Suponga que desea almacenar el cumpleaños de un artista en una tabla. Al momento de guardar el registro del artista, no tiene la información de cumpleaños.
Para representar la información de cumpleaños desconocida en la base de datos, puede usar una fecha especial como 01.01.1900
o un ''
cuerda vacía. Sin embargo, estos dos valores no muestran claramente que se desconoce el cumpleaños.
NULL se inventó para resolver este problema. En lugar de utilizar un valor especial para indicar que falta información, se utiliza NULL.
NULL es especial porque no puede compararlo con otro valor. En pocas palabras, si se desconocen las dos piezas de información, no se pueden comparar.
NULL ni siquiera se puede comparar consigo mismo; NULL no es igual a sí mismo por lo que NULL = NULL
siempre da como resultado falso.
Cuando se trata de ordenar, SQLite considera que NULL es más pequeño que cualquier otro valor.
Significa que los valores NULL aparecerán al principio del conjunto de resultados si usa ASC o al final del conjunto de resultados cuando use DESC.
SQLite 3.30.0 agregó el NULLS FIRST
y NULLS LAST
opciones al ORDER BY
cláusula. Los NULLS FIRST
La opción especifica que los NULL aparecerán al principio del conjunto de resultados mientras que NULLS LAST
opción colocar valores NULL al final del conjunto de resultados.
El siguiente ejemplo usa el ORDER BY
cláusula para ordenar las pistas por compositores:
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer;
Code language: SQL (Structured Query Language) (sql)
Primero, verá que los valores NULL aparecen al principio del conjunto de resultados porque SQLite los trata como los valores más bajos. Cuando te desplazas hacia abajo en el resultado, verás otros valores:
El siguiente ejemplo usa el NULLS LAST
opción para colocar valores NULL después de otros valores:
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer NULLS LAST;
Code language: SQL (Structured Query Language) (sql)
Si se desplaza hacia abajo en la salida, verá que los valores NULL se colocan al final del conjunto de resultados:
En este tutorial, ha aprendido a usar SQLite ORDER BY
cláusula para ordenar el conjunto de resultados usando una sola columna, varias columnas en orden ascendente y descendente.