Order by
Uma cláusula ORDER BY
no SGBD SQL, especifica que em uma declaração de um comando SELECT
, o retorno é um conjunto de resultados, com as linhas sendo ordenadas baseando-se nos valores de uma ou mais colunas especificadas na cláusula. Os critérios de ordenação não precisam ser incluídos nos atributos do conjunto de resultados do SELECT
. Os critérios de ordenação podem ser expressões, incluindo nomes de colunas, funções definidas pelo usuário, operações aritméticas ou expressões CASE
. As expressões são avaliadas e os resultados são utilizados para a ordenação, ou seja, os valores armazenados na coluna ou os resultados da chamada da função.
A estrutura ORDER BY . . .
DESC
irá ordenar a tabela resultado em ordem decrescente de valores, caso contrário, a ordem crescente será utilizada (podendo ser especificada explicitamente usando ASC
). Quando são ordenadas letras ou palavras, os valores são ordenados em ordem alfabética.
A cláusula ORDER BY
é a única maneira de ordenar as linhas no conjunto de resultados. Sem essa cláusula, o sistema de banco de dados relacional retornará as linhas da tabela resultado em qualquer ordem.
Embora alguns sistemas de banco de dados permitam a especificação de uma ORDER BY
em subconsultas ou definições de visualização, a presença dele ali não tem efeito. Uma visão é uma tabela relacional lógica, e o modelo relacional exige que uma tabela seja um conjunto de linhas, o que implica nenhuma ordem de classificação. Existe uma exceção, que são construções como ORDER BY ORDER OF ...
(não padronizado no SQL: 2003 ) que permite a propagação de critérios de classificação por meio de subconsultas aninhadas. O SQL server da Microsoft também permite subconsultas com ORDER BY
se o SELECT
usa as cláusulas TOP
ou OFFSET
e FETCH
.
Exemplos
[editar | editar código-fonte]SELECT *
FROM Employees
ORDER BY LastName, FirstName
Nesse exemplo, o resultado desse SELECT
, que mostra todos os atributos (colunas) da tabela, é ordenado pelo campo LastName (sobrenome) e, em seguida, pelo campo FirstName (primeiro nome) se o sobrenome corresponder.