SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Ordem SQLite por


Resumo :neste tutorial, você aprenderá como classificar um conjunto de resultados de uma consulta usando SQLite ORDER BY cláusula.

Introdução ao SQLite ORDER BY cláusula


O SQLite armazena dados nas tabelas em uma ordem não especificada. Isso significa que as linhas da tabela podem ou não estar na ordem em que foram inseridas.

Se você usar o SELECT instrução para consultar dados de uma tabela, a ordem das linhas no conjunto de resultados não é especificada.

Para classificar o conjunto de resultados, você adiciona o ORDER BY cláusula para o SELECT declaração da seguinte forma:
SELECT
   select_list
FROM
   table
ORDER BY
    column_1 ASC,
    column_2 DESC;Code language: SQL (Structured Query Language) (sql)

O ORDER BY cláusula vem depois do FROM cláusula. Ele permite classificar o conjunto de resultados com base em uma ou mais colunas em ordem crescente ou decrescente.

Nesta sintaxe, você coloca o nome da coluna pela qual deseja classificar após o ORDER BY cláusula seguida pelo ASC ou DESC palavra-chave.
  • O ASC palavra-chave significa ascendente.
  • E o DESC palavra-chave significa decrescente.

Se você não especificar o ASC ou DESC palavra-chave, o SQLite classifica o conjunto de resultados usando o ASC opção. Em outras palavras, ele classifica o conjunto de resultados em ordem crescente por padrão.

Caso você queira classificar o conjunto de resultados por várias colunas, use uma vírgula (,) para separar duas colunas. O ORDER BY cláusula classifica as linhas usando colunas ou expressões da esquerda para a direita. Em outras palavras, o ORDER BY cláusula classifica as linhas usando a primeira coluna na lista. Em seguida, ele classifica as linhas classificadas usando a segunda coluna e assim por diante.

Você pode classificar o conjunto de resultados usando uma coluna que não aparece na lista de seleção do SELECT cláusula.

SQLite ORDER BY exemplo de cláusula


Vamos pegar as tracks tabela no banco de dados de exemplo para a demonstração.

Suponha que você queira obter dados das colunas name, milissegundos e album id, use a seguinte instrução:
SELECT
	name,
	milliseconds, 
        albumid
FROM
	tracks;Code language: SQL (Structured Query Language) (sql)

Tente

O SELECT declaração que não usa ORDER BY A cláusula retorna um conjunto de resultados que não está em nenhuma ordem.

Suponha que você queira classificar o conjunto de resultados com base em AlbumId coluna em ordem crescente, você usa a seguinte instrução:
SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid ASC;Code language: SQL (Structured Query Language) (sql)

Tente

O conjunto de resultados agora é classificado pelo AlbumId coluna em ordem crescente, conforme mostrado na captura de tela.

SQLite usa ASC por padrão, então você pode omiti-lo na declaração acima da seguinte forma:
SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid;

Tente

Suponha que você queira classificar o resultado ordenado (por AlbumId ) acima pelos Milliseconds coluna em ordem decrescente. Neste caso, você precisa adicionar o Milliseconds coluna para o ORDER BY cláusula da seguinte forma:
SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid ASC,
        milliseconds DESC;Code language: SQL (Structured Query Language) (sql)

Tente

SQLite classifica linhas por AlbumId coluna em ordem crescente primeiro. Em seguida, ele classifica o resultado classificado definido pelo Milliseconds coluna em ordem decrescente.

Se você olhar as faixas do álbum com AlbumId 1, você descobre que a ordem das faixas muda entre as duas instruções.

SQLite ORDER BY com a posição da coluna


Em vez de especificar os nomes das colunas, você pode usar a posição da coluna no ORDER BY cláusula.

Por exemplo, a instrução a seguir classifica as faixas por albumid (3ª coluna) e milliseconds (2ª coluna) em ordem crescente.
SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	 3,2;Code language: SQL (Structured Query Language) (sql)

Tente

Os números 3 e 2 referem-se ao AlbumId e Milliseconds na lista de colunas que aparece em SELECT cláusula.

Classificando NULLs


No mundo do banco de dados, NULL é especial. Denota que as informações ausentes ou os dados não são aplicáveis.

Suponha que você queira armazenar o aniversário de um artista em uma tabela. No momento de salvar o registro do artista, você não tem as informações de aniversário.

Para representar as informações de aniversário desconhecidas no banco de dados, você pode usar uma data especial como 01.01.1900 ou um '' cadeia vazia. No entanto, ambos os valores não mostram claramente que o aniversário é desconhecido.

NULL foi inventado para resolver esse problema. Em vez de usar um valor especial para indicar que as informações estão faltando, NULL é usado.

NULL é especial porque você não pode compará-lo com outro valor. Simplificando, se as duas informações forem desconhecidas, você não poderá compará-las.

NULL é mesmo não pode ser comparado consigo mesmo; NULL não é igual a si mesmo então NULL = NULL sempre resulta em falso.

Quando se trata de classificação, o SQLite considera NULL menor que qualquer outro valor.

Isso significa que NULLs aparecerão no início do conjunto de resultados se você usar ASC ou no final do conjunto de resultados quando usar DESC.

SQLite 3.30.0 adicionou o NULLS FIRST e NULLS LAST opções para o ORDER BY cláusula. O NULLS FIRST A opção especifica que os NULLs aparecerão no início do conjunto de resultados enquanto o NULLS LAST opção coloca NULLs no final do conjunto de resultados.

O exemplo a seguir usa o ORDER BY cláusula para classificar faixas por compositores:
SELECT 
    TrackId, 
    Name, 
    Composer 
FROM 
   tracks
ORDER BY 
   Composer;Code language: SQL (Structured Query Language) (sql)

Primeiro, você vê que NULLs aparecem no início do conjunto de resultados porque o SQLite os trata como os valores mais baixos. Ao rolar para baixo o resultado, você verá outros valores:

O exemplo a seguir usa o NULLS LAST opção para colocar NULLs após outros valores:
SELECT 
    TrackId, 
    Name, 
    Composer 
FROM 
    tracks
ORDER BY 
    Composer NULLS LAST;Code language: SQL (Structured Query Language) (sql)

Se você rolar a saída, verá que NULLs são colocados no final do conjunto de resultados:

Neste tutorial, você aprendeu como usar o SQLite ORDER BY cláusula para classificar o conjunto de resultados usando uma única coluna, várias colunas em ordem crescente e decrescente.