🛢️ ORDER BY
🧠 Explicação
O comando ORDER BY
é utilizado em instruções SQL para ordenar as linhas retornadas por uma consulta. Ele define a ordem de apresentação dos registros na tabela de resultados, podendo ser crescente (ASC
) ou decrescente (DESC
).
Se nenhuma direção for informada, o padrão é crescente. Também é possível definir se os valores NULL
devem aparecer primeiro (NULLS FIRST
) ou por último (NULLS LAST
).
🔧 Usos mais comuns
-
Organizar os resultados por um ou mais campos.
-
Listar dados de forma ordenada para facilitar leitura e análise.
-
Aplicar ordenações múltiplas (por exemplo: ordenar por nome e depois por data).
-
Controlar a posição de valores nulos no resultado.
🧾 Sintaxe
SELECT coluna1, coluna2, ...
FROM nome_tabela
ORDER BY coluna1 [ASC | DESC] [NULLS FIRST | NULLS LAST],
coluna2 [ASC | DESC], ...;
📌 Regras
-
Você pode ordenar por qualquer coluna da seleção, inclusive por expressões.
-
Também é possível ordenar pelas posições das colunas, usando inteiros:
ORDER BY 1
ordena pela primeira coluna selecionada. -
Não é permitido ordenar por colunas de tipos como
CLOB
,BLOB
,XML
ou tipos estruturados. -
Quando há colunas com o mesmo valor, a ordem desses registros é arbitrária (não garantida).
-
Pode-se ordenar por colunas apelidadas com AS, desde que o nome seja usado no
ORDER BY
.
💻 Exemplo prático
SELECT empnome, empsala
FROM emp
ORDER BY empnome ASC;
Esse exemplo lista os nomes e salários dos empregados em ordem alfabética crescente de nome.
🔀 Exemplo com múltiplas ordenações
SELECT empnome, empsala, empserv
FROM emp
ORDER BY empserv ASC, empsala DESC;
Primeiro ordena por função (empserv
), depois por salário (empsala
) em ordem decrescente dentro de cada função.
❗ Exemplo com tratamento de valores nulos
SELECT empnome, empcomi
FROM emp
ORDER BY empcomi DESC NULLS LAST;
Ordena os empregados pela comissão de forma decrescente, deixando os valores nulos por último.
📎 Dicas
-
Use
ORDER BY coluna DESC
para exibir os maiores valores primeiro. -
Combine
ORDER BY
comDISTINCT
com cautela — nem toda coluna pode ser usada. -
Ao ordenar por expressões (ex:
empsala * 2
), utilize o número da coluna na ordem:
SELECT empnome, empsala * 2
FROM emp
ORDER BY 2;
⚠️ Condições que podem ocorrer
-
INVREQ
: uso inválido da cláusula (ex: tentar ordenar por um tipo não permitido). -
LENGERR
: erro de comprimento em expressões de ordenação. -
Outros erros podem ocorrer dependendo da subconsulta ou do contexto.
✅ Conclusão
A cláusula ORDER BY
é essencial para organizar a apresentação dos dados em consultas SQL. Ela oferece flexibilidade para múltiplas ordenações, definição da posição de valores nulos e uso de colunas por posição ou nome. Saber usá-la bem é fundamental para produzir relatórios legíveis e bem organizados em ambientes DB2.