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.
-- 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;Sempre especifique ORDER BY ao usar LIMIT — sem ele, a ordem é indeterminada e você pode receber páginas inconsistentes.