SQL: Order By

Neste artigo veremos o uso da cláusula ORDER BY e o uso dos operadores ASC e DESC.

Cláusula ORDER BY

Quando precisamos que o resultado de nossa consulta a uma tabela seja fornecido em uma ordem específica, de acordo com um determinado critério, devemos usar a cláusula ORDER BY que, como o próprio nome diz, considera uma certa ordem para retornar os dados de uma consulta. A sintaxe padrão é a seguinte:

SELECT coluna1, coluna2 FROM nomedatabela ORDER BY coluna1

Usaremos os exemplos a seguir usando a tabela Produtos.

Saiba mais: SQL: ORDER BY

Ordenando por uma coluna: Para que os dados sejam retornados e exibidos de acordo com o nome da coluna, usamos o seguinte comando:

O comando acima determina que as colunas NOMEPRODUTO e VALORPRODUTO sejam selecionadas. Além disso, a exibição dos valores da coluna NOMEPRODUTO é retornada em ordem alfabética, como podemos ver:

Ordenando por várias colunas: É possível usar a cláusula ORDER BY para ordenar os dados por várias colunas, com base nos nomes das colunas e nas posições das mesmas no SELECT. Com o comando a seguir conseguimos isso:

O resultado será esse:

ORDER BY ASC e DESC

A cláusula ORDER BY pode ser utilizada com as opções ASC e DESC, descritas abaixo:

Caso não especifiquemos ASC ou DESC, os dados da tabela serão retornados em ordem ascendente, que é o valor padrão. Veja abaixo o uso das opções:

ASC: Executemos a seguinte instrução:

E veremos o seguinte resultado:

A opção ASC também pode ser usada para ordenar os dados de uma tabela conforme duas colunas diferentes. Para isso, devemos usar a seguinte instrução:

Iremos obter o seguinte resultado:

Assim como o ASC, a opção DESC também pode ser adotada para ordenar os dados de uma tabela conforme duas ou mais colunas diferentes. Para isso, podemos usar o seguinte comando:

O resultado será esse:

Percebam que podemos fazer diversas combinações de consultas com ASC e DESC.

CLÁUSULA TOP

Como resultado de uma consulta a uma tabela de banco dados, temos a opção de retornar a quantidade de linhas desejada, a partir da primeira linha selecionada. Para isso, usamos a cláusula TOP. Usando a tabela Produtos como exemplo, usamos a seguinte instrução para retornar as cinco primeiras linhas desta tabela:

O resultado será esse:

O uso da cláusula TOP merece as seguintes considerações:

CLÁUSULA TOP COM ORDER BY

As cláusulas TOP e ORDER BY podem e devem ser utilizadas de forma conjunta. Usando novamente a tabela Produtos como exemplo, vamos exibir os três primeiros produtos de menor preço, dentre a relação de produtos da lista. Usamos a seguinte instrução:

Que nos resultará nisso:

Da mesma forma, se desejar retornarmos os dois produtos mais caros da tabela, por exemplo, usaremos a seguinte instrução:

Que nos resultará nesses valores:

CLÁUSULA TOP WITH TIES COM ORDER BY

Permitida apenas em instruções SELECT e quando uma cláusula ORDER BY é especificada, a cláusula TOP WITH TIES determina que linhas adicionais sejam retornadas a partir do conjunto de resultados base com o mesmo valor apresentado nas colunas ORDER BY, sendo exibidas como as últimas das linhas TOP n (PERCENT).

Considerando nossa tabela de Produtos, vamos exibir seus dados em ordem crescente conforme a coluna QTDEPRODUTO. Isso é feito pela seguinte instrução:

O resultado é esse:

Vamos supor agora que precisamos obter como resultado o produto com a menor quantidade de unidades. Porém, é preciso considerar a existência de produtos com a mesma quantidade de unidades. Neste caso, executamos a seguinte instrução para retornar os produtos com o menor número de unidades:

O resultado será esse:

Podemos observar na imagem acima que existem três produtos com a mesma quantidade de unidades, ou seja, todos eles representam a menor quantidade de unidades da tabela.

Neste exemplo, além das cláusulas ORDER BY e TOP, já descritas anteriormente, a cláusula WITH TIES retorna a primeira linha da tabela, além de todas as linhas que apresentam quantidade idêntica à quantidade do produto que a cláusula TOP 1 selecionou.

Da mesma forma, por exemplo, se quisermos retornar um resultado com os dois produtos que possuem maior quantidade de unidades, seguido dos produtos que apresentam a mesma quantidade do segundo produto, usamos a seguinte instrução:

Que nos resultará nisso:

Artigos relacionados