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.