SQL/Ordenação e Paginação/ORDER BY e LIMIT
SQL⏱ ~2 min de leitura

ORDER BY e LIMIT

Ordene e pagine seus resultados

ORDER BY ordena o resultado de uma query. ASC (crescente) é o padrão e pode ser omitido; DESC ordena do maior para o menor. É possível ordenar por múltiplas colunas — a segunda coluna é usada como critério de desempate.

LIMIT restringe o número de linhas retornadas — fundamental para paginação e para evitar trazer dados demais acidentalmente. OFFSET pula um número de linhas, permitindo paginação quando combinado com LIMIT.

NULL values tem comportamento especial na ordenação: em PostgreSQL e SQLite são tratados como maiores que qualquer valor (NULLS LAST por padrão com DESC). Use NULLS FIRST / NULLS LAST para controlar esse comportamento.

Exemplo.java
-- Ordenação simples
SELECT * FROM produtos
ORDER BY preco;               -- ASC (crescente) é padrão

SELECT * FROM produtos
ORDER BY preco DESC;          -- do mais caro ao mais barato

-- Múltiplas colunas
SELECT * FROM funcionarios
ORDER BY departamento ASC, salario DESC;
-- Ordena por depto, depois salário dentro de cada depto

-- LIMIT — top N resultados
SELECT nome, salario
FROM funcionarios
ORDER BY salario DESC
LIMIT 10;   -- top 10 maiores salários

-- Paginação com LIMIT + OFFSET
-- Página 1 (registros 1-10)
SELECT * FROM produtos ORDER BY id LIMIT 10 OFFSET 0;

-- Página 2 (registros 11-20)
SELECT * FROM produtos ORDER BY id LIMIT 10 OFFSET 10;

-- Página N geral:
-- LIMIT itens_por_pagina OFFSET (pagina - 1) * itens_por_pagina

-- NULLs na ordenação
SELECT nome, data_demissao
FROM funcionarios
ORDER BY data_demissao NULLS LAST;  -- ativos aparecem primeiro

-- Ordenar por expressão calculada
SELECT nome, (preco * desconto) AS preco_final
FROM produtos
ORDER BY preco_final ASC;
💡 Dica pro

Sempre especifique ORDER BY ao usar LIMIT — sem ele, a ordem é indeterminada e você pode receber páginas inconsistentes.

Recompensa+25 XP+exercícios