Se você está migrando de MySQL/PostgreSQL para Firebird, uma das primeiras surpresas é que o Firebird não suporta LIMIT/OFFSET. Em vez disso, usa FIRST e SKIP.
Sintaxe
-- MySQL/PostgreSQL
SELECT * FROM clientes LIMIT 10 OFFSET 20;
-- Firebird
SELECT FIRST 10 SKIP 20 * FROM clientes;
FIRST: limitar resultados
-- Top 5 clientes mais recentes
SELECT FIRST 5 nome, data_cadastro
FROM clientes
ORDER BY data_cadastro DESC
SKIP: pular resultados (paginação)
-- Página 2 (10 por página)
SELECT FIRST 10 SKIP 10 nome, data_cadastro
FROM clientes
ORDER BY data_cadastro DESC
Armadilhas comuns
- FIRST/SKIP vêm antes do SELECT — sintaxe diferente do padrão SQL
- Sem ORDER BY, o resultado é imprevisível — sempre ordene
- SKIP sem FIRST — pula mas retorna todos os restantes
Dica de performance
Para paginação eficiente, use índices na coluna de ordenação:
CREATE INDEX idx_clientes_data ON clientes(data_cadastro);
Precisa gerar queries Firebird com paginação? O Sqlify gera SQL Firebird válido a partir de português — inclusive com FIRST e SKIP.
Conclusão
FIRST e SKIP são a forma Firebird de LIMIT/OFFSET. A diferença é a posição na query (antes do SELECT) e a semântica (FIRST = quantos retornar, SKIP = quantos pular).