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
ASCpalavra-chave significa ascendente. - E o
DESCpalavra-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.