English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL TOP / Cláusula LIMIT do MySQL

Neste tutorial, você aprenderá como recuperar um número específico de registros de uma tabela.

Limitar o conjunto de resultados

Em alguns casos, você pode não precisar retornar todas as linhas da consulta, por exemplo, se você quiser buscar os primeiros a se juntar à organização recentemente.}10funcionários, ou obter os primeiros3estudantes, etc.

Para lidar com isso, você pode usar a cláusula TOP no comando SELECT, mas essa cláusula é suportada apenas pelos sistemas de banco de dados SQL Server e MS Access.

O MySQL fornece uma cláusula LIMIT equivalente, enquanto o Oracle fornece a cláusula ROWNUM no comando SELECT para limitar o número de linhas retornadas pela consulta.

Sintaxe da cláusula TOP do SQL

A cláusula TOP do SQL é usada para limitar o número de linhas retornadas. Sua sintaxe básica é:

SELECT TOP number | percent column_list FROM table_name;

Aqui,column_listé uma lista de nomes de colunas ou campos de banco de dados a serem obtidos, separados por vírgulas (por exemploname,age,countryetc.). Vamos ver como ele funciona.

Suponha que tenhamos umemployeesA tabela contém os seguintes registros:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 | NULL |
+--------+--------------+------------+--------+---------+

A seguinte consulta retornaFuncionários (employees)três funcionários com os maiores rendimentos na tabelaFuncionários.

-- Sintaxe para o banco de dados SQL Server  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;

O conjunto de resultados retornado será como follows:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+

Se você quiser buscar a porcentagem de linhas em vez de um número fixo de linhas, você pode usar a palavra-chave PERCENT após o valor fixo da cláusula TOP. O valor decimal é arredondado para o próximo valor inteiro (por exemplo,1.5arredondados para2)。

A seguinte consulta retorna os funcionários com os maiores rendimentos30% dos funcionários.

-- Sintaxe do banco de dados SQL Server
SELECT TOP 30% * FROM employees
ORDER BY salary DESC;

O conjunto de resultados retornado pela consulta acima será como follows:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

Sintaxe do LIMIT do MySQL

A cláusula LIMIT do MySQL tem a mesma função que a cláusula TOP do SQL. Sua sintaxe básica é:

SELECT column_list FROM table_name LIMIT number;

A seguinte consulta retornaFuncionários (employees)três funcionários com os maiores rendimentos na tabelaFuncionários.

-- Sintaxe do banco de dados MySQL
SELECT * FROM employees 
ORDER BY salary DESC LIMIT 3;

Após a execução, você obterá a seguinte saída:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+

Atenção: No comando SELECT, sempre useORDER BYA cláusula de frase deve ser usada juntamente com a cláusula LIMIT. Caso contrário, você pode não obter os resultados ideais.

Definir o deslocamento de linha na cláusula LIMIT

A cláusula LIMIT aceita um segundo parâmetro opcional.

Quando dois parâmetros são especificados, o primeiro parâmetro especifica o deslocamento do primeiro linha a ser retornada, ou seja, o ponto de partida, enquanto o segundo parâmetro especifica o número máximo de linhas a serem retornadas. O deslocamento inicial da linha é 0 (não1)

Portanto, para encontrar o terceiro funcionário mais bem pago, você pode executar a seguinte operação:

-- Sintaxe do banco de dados MySQL
SELECT * FROM employees 
ORDER BY salary DESC LIMIT 2, 1;

Após executar o comando acima, o conjunto de resultados terá apenas um registro:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+