English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá como recuperar um número específico de registros de uma tabela.
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.
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 | +--------+--------------+------------+--------+---------+
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.
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 | +--------+--------------+------------+--------+---------+