SQLite Ordenar por

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

ORDER BYIntrodução à cláusula SQLite

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 a  SELECTinstrução para consultar dados de uma tabela, a ordem das linhas no conjunto de resultados não será especificada.

Para classificar o conjunto de resultados, adicione a ORDER BYcláusula à  SELECTinstrução da seguinte maneira:

SELECT
   select_list
FROM
   table
ORDER BY
    column_1 ASC,
    column_2 DESC;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A ORDER BYcláusula vem depois da FROMclá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 a ORDER BYcláusula seguida pela palavra-chave ASCou DESC.

  • A ASCpalavra-chave significa ascendente.
  • E a DESCpalavra-chave significa descendente.

Se você não especificar a palavra-chave ASCou DESC, o SQLite classificará o conjunto de resultados usando a ASCopção. Em outras palavras, ele classifica o conjunto de resultados em ordem crescente por padrão.

Caso queira classificar o conjunto de resultados por múltiplas colunas, use uma vírgula (,) para separar duas colunas. A ORDER BYcláusula classifica as linhas usando colunas ou expressões da esquerda para a direita. Em outras palavras, a ORDER BYcláusula classifica as linhas usando a primeira coluna da 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 da SELECTcláusula.

ORDER BYExemplo de cláusula SQLite

Vamos pegar a trackstabela do banco de dados de exemplo para demonstração.

Suponha que você queira obter dados das colunas de nome, milissegundos e ID do álbum, use a seguinte instrução:

SELECT
	name,
	milliseconds, 
        albumid
FROM
	tracks;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

rastreia dados da tabela sem classificar

A SELECTinstrução que não usa ORDER BYa 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 na AlbumIdcoluna em ordem crescente. Use a seguinte instrução:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid ASC;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

Exemplo SQLite ORDER BY

O conjunto de resultados agora é classificado pela AlbumIdcoluna em ordem crescente, conforme mostrado na captura de tela.

O SQLite usa ASCpor padrão, então você pode omiti-lo na instrução acima da seguinte forma:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid;

Tente

Suponha que você queira classificar o resultado classificado (por AlbumId) acima pela Millisecondscoluna em ordem decrescente. Nesse caso, você precisa adicionar a Millisecondscoluna à ORDER BYcláusula da seguinte forma:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid ASC,
        milliseconds DESC;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

SQLite ORDER BY exemplo de múltiplas colunas

O SQLite classifica AlbumIdprimeiro as linhas por coluna em ordem crescente. Em seguida, ele classifica o resultado classificado definido pela Millisecondscoluna em ordem decrescente.

Se você olhar as faixas do álbum com AlbumId1, descobrirá que a ordem das faixas muda entre as duas afirmações.

SQLite ORDER BYcom a posição da coluna

Em vez de especificar os nomes das colunas, você pode usar a posição da coluna na ORDER BYclá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;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Tente

Os números 3 e 2 referem-se a AlbumIde Millisecondsna lista de colunas que aparece na SELECTcláusula.

SQLite ORDER BY múltiplas colunas por posições

Classificando NULLs

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

Suponha que você queira armazenar a data de aniversário de um artista em uma tabela. Na hora de salvar o disco do artista, você não tem a informação de aniversário.

Para representar as informações de aniversário desconhecidas no banco de dados, você pode usar uma data especial 01.01.1900ou uma ''string 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 a informação está faltando, é usado NULL.

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 é par e não pode ser comparado consigo mesmo; NULL não é igual a si mesmo, então NULL = NULLsempre 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 as opções NULLS FIRSTe NULLS LASTà ORDER BYcláusula. A NULLS FIRSTopção especifica que os NULLs aparecerão no início do conjunto de resultados enquanto a NULLS LASTopção coloca NULLs no final do conjunto de resultados.

O exemplo a seguir usa a ORDER BYcláusula para classificar faixas por compositores:

SELECT 
    TrackId, 
    Name, 
    Composer 
FROM 
   tracks
ORDER BY 
   Composer;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( 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:

SQLite ORDENAR POR NULOS PRIMEIRO

O exemplo a seguir usa a NULLS LASTopção de colocar NULLs após outros valores:

SELECT 
    TrackId, 
    Name, 
    Composer 
FROM 
    tracks
ORDER BY 
    Composer NULLS LAST;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

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

Neste tutorial, você aprendeu como usar a ORDER BYcláusula SQLite para classificar o conjunto de resultados usando uma única coluna, múltiplas colunas em ordem crescente e decrescente.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *