sql >> Base de Datos >  >> RDS >> SQLite

SQLite ordenar por

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.