O operador LIMIT permite especificar a quantidade de linhas que retornarão ao usarmos SELECT. A sintaxe é a seguinte:
select campo1, campo2... from nome_tabela limit n [offset m];
Nesta sintaxe:
- n é o número de linhas a serem retornadas
- m é o número de linhas a serem ignoradas antes de retornar as n linhas.
A instrução select retorna linhas fora de ordem, portanto, a cláusula limit sem o “order by” retornará um resultado de linhas desordenadas. Por isso podemos usar “order by”
select campo1, campo2... from nome_tabela order by limit n [offset m];
Há uma outra sintaxe que podemos usar:
select campo1, campo2... from nome_tabela order by limit m, n;
Acima pulamos m linhas e retorna as próximas n.
Tabela Que Usaremos nos Exemplos
Veja o artigo onde baixamos o banco nation para testes: MariaDB e MySQL: Baixando Exemplo de Banco de Dados
Para os exemplos Usaremos a tabela countries do banco de dados nation.
MariaDB [nation]> desc countries; +---------------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------+------+-----+---------+----------------+ | country_id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | YES | | NULL | | | area | decimal(10,2) | NO | | NULL | | | national_day | date | YES | | NULL | | | country_code2 | char(2) | NO | UNI | NULL | | | country_code3 | char(3) | NO | UNI | NULL | | | region_id | int(11) | NO | MUL | NULL | | +---------------+---------------+------+-----+---------+----------------+
Exemplos com o Operador LIMIT
Para esses exemplos consideramos que você está conectado ao banco de dados nation. Se tiver dificuldade em acessar o banco veja esse tutorial: Conectando ao MariaDB ou MySQL
#1 selecionando apenas os primeiros 5 países da tabela countries
select name from countries order by name limit 5;
MariaDB [nation]> select name from countries order by name limit 5; +----------------+ | name | +----------------+ | Afghanistan | | Albania | | Algeria | | American Samoa | | Andorra | +----------------+
#2 Usando offset para pular os 5 primeiros países e selecionar os próximos 10 países
select name from countries order by name limit 10 offset 5;
MariaDB [nation]> select name from countries order by name limit 10 offset 5; +---------------------+ | name | +---------------------+ | Angola | | Anguilla | | Antarctica | | Antigua and Barbuda | | Argentina | | Armenia | | Aruba | | Australia | | Austria | | Azerbaijan | +---------------------+
#3 executando o mesmo comando acima mas com outra sintaxe
select name from countries order by name limit 5, 10;
MariaDB [nation]> select name from countries order by name limit 5, 10; +---------------------+ | name | +---------------------+ | Angola | | Anguilla | | Antarctica | | Antigua and Barbuda | | Argentina | | Armenia | | Aruba | | Australia | | Austria | | Azerbaijan | +---------------------+
#4 Pegando os 10 países com maior área. Para isso usamos:
select name, area from countries order by area desc limit 10;
MariaDB [nation]> select name, area from countries order by area desc limit 10; +--------------------+-------------+ | name | area | +--------------------+-------------+ | Russian Federation | 17075400.00 | | Antarctica | 13120000.00 | | Canada | 9970610.00 | | China | 9572900.00 | | United States | 9363520.00 | | Brazil | 8547403.00 | | Australia | 7741220.00 | | India | 3287263.00 | | Argentina | 2780400.00 | | Kazakstan | 2724900.00 | +--------------------+-------------+
Acima usamos:
- order by para ordenar o resultado
- desc para ordenar do maior para o menor
- limit para exibir somente os 10 primeiros países
#5 Pegando o país com menor área
select name, area from countries order by area limit 1;
MariaDB [nation]> select name, area from countries order by area limit 1; +-------------------------------+------+ | name | area | +-------------------------------+------+ | Holy See (Vatican City State) | 0.40 | +-------------------------------+------+
#6 Pegando o segundo país com menor área
select name, area from countries order by area limit 1,1;
MariaDB [nation]> select name, area from countries order by area limit 1,1; +--------+------+ | name | area | +--------+------+ | Monaco | 1.50 | +--------+------+
#7 Exibindo o país com maior área
select name, area from countries order by area desc limit 1;
MariaDB [nation]> select name, area from countries order by area desc limit 1; +--------------------+-------------+ | name | area | +--------------------+-------------+ | Russian Federation | 17075400.00 | +--------------------+-------------+
Comment on “MariaDB e MySQL: Usando o Operador LIMIT ”