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:
- ASC: Quando utilizada, esta opção faz com que as linhas sejam retornadas em ordem ascendente.
- DESC: Quando utilizada, esta opção faz com que as linhas sejam retornadas em ordem descendente.
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:
- Em Partitioned Views, TOP não pode ser aplicada junto às instruções UPDATE e INSERT.
- Não há ordem das linhas referenciadas na expressão TOP utilizada com as instruções INSERT, DELETE ou UPDATE, sendo que TOP n retornam linhas aleatórias n como resposta.
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
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo