Como selecionar as N primeiras linhas no MySQL
Selecionar as N primeiras linhas de uma tabela é uma tarefa fundamental ao trabalhar com bancos de dados. Neste tutorial, vamos ver como fazer isso no MySQL com exemplos práticos.
Antes de continuar a leitura, queria apresentar nosso cliente MySQL moderno, o Beekeeper Studio. Abra uma tabela e ele pagina as linhas para você, ou clique com o botão direito nela e escolha SQL: Select Top para gerar a consulta. Ele é gratuito para MySQL, baixe aqui.
Usando a cláusula LIMIT
A cláusula LIMIT do MySQL é uma forma simples de especificar quantas linhas retornar do conjunto de resultados de uma consulta.
Exemplo: selecionar as 5 primeiras linhas
Suponha que você tenha uma tabela chamada employees com o seguinte schema:
CREATE TABLE employees (
id INT,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
Você quer selecionar os 5 funcionários com os maiores salários, em ordem decrescente.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;
Por que funciona:
-
ORDER BY salary DESCordena as linhas do maior para o menor salário. -
LIMIT 5restringe a saída às 5 primeiras linhas após a ordenação.
Saída esperada:
+----+----------+--------+
| id | name | salary |
+----+----------+--------+
| 3 | Alice | 90000 |
| 5 | Bob | 85000 |
| 2 | Charlie | 75000 |
| 6 | Diana | 70000 |
| 4 | Edward | 68000 |
+----+----------+--------+
Lidando com empates usando LIMIT
Quando há empates, usar apenas LIMIT pode não gerar resultados consistentes sem um tratamento adicional. Use ORDER BY com mais colunas para desempatar.
Exemplo: desempatando com uma ordenação secundária
Para lidar com salários empatados, ordene pelo id do funcionário como critério secundário:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 5;
Por que funciona:
- Adicionar
id ASCgarante que, em caso de salários empatados, os funcionários comidmenor sejam sempre escolhidos.
Usando LIMIT com paginação
Além de selecionar as N primeiras linhas, muitas vezes precisamos paginar os resultados selecionando um intervalo específico de linhas.
Exemplo: selecionar as próximas 5 linhas
Para paginar os resultados e selecionar as linhas 6-10 com base no salário:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5 OFFSET 5;
Por que funciona:
-
LIMIT 5especifica o número de linhas a retornar. -
OFFSET 5pula as 5 primeiras linhas.
Saída esperada:
O próximo grupo de 5 funcionários após os 5 primeiros:
+----+---------+--------+
| id | name | salary |
+----+---------+--------+
| 1 | Frank | 67000 |
| 7 | Grace | 64000 |
| 8 | Hannah | 60000 |
| 9 | Ivan | 59000 |
| 10 | Jane | 58000 |
+----+---------+--------+
Conclusão
Selecionar as N primeiras linhas no MySQL com a cláusula LIMIT é eficiente e fácil. Quando houver possíveis empates, garanta uma ordenação estável usando colunas adicionais no ORDER BY. Essa técnica simples é essencial para muitas aplicações, incluindo análises e relatórios, especialmente ao lidar com grandes volumes de dados.
Dominando essas técnicas, você terá mais controle sobre a recuperação e manipulação de dados no MySQL.
O Beekeeper Studio é uma GUI para MySQL gratuita e open source
Tenho usado o Beekeeper Studio no meu trabalho com MySQL ultimamente, e ele rapidamente se tornou uma das minhas ferramentas de banco de dados favoritas. A interface é limpa, moderna e sem distrações, o que facilita focar nas consultas sem a bagunça que você encontra em outras ferramentas. - Surendra Singh
O Beekeeper Studio é um cliente MySQL rápido, intuitivo e fácil de usar. Ele também suporta vários outros bancos de dados e funciona muito bem no Windows, Mac e Linux.
O que os usuários de MySQL dizem sobre o Beekeeper Studio
Escolhi este programa depois de anos usando o phpMyAdmin — é como entrar em um mundo de qualidade superior; aqui, senti de verdade que o usuário é genuinamente valorizado. O conceito em si, a implementação, a experiência prática — sou sinceramente grato ao Matthew por tudo isso.
Ferramenta fabulosa, a IDE mais prática que encontrei até hoje para administrar bancos Postgres e MySql - simplesmente funciona, sem complicação :-)