LIMITE MySQL

Resumo : neste tutorial, você aprenderá como usar a LIMIT cláusula MySQL para restringir o número de linhas retornadas por uma consulta.

Introdução à cláusula LIMIT do MySQL

A LIMITcláusula é usada na SELECTinstrução para restringir o número de linhas a serem retornadas. A LIMITcláusula aceita um ou dois argumentos. Os valores de ambos os argumentos devem ser zero ou inteiros positivos .

O seguinte ilustra a LIMITsintaxe da cláusula com dois argumentos:

SELECT 
    select_list
FROM
    table_name
LIMIT [offset,] row_count;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • Especifica offseto deslocamento da primeira linha a ser retornada. O offsetda primeira linha é 0, não 1.
  • Especifica row_counto número máximo de linhas a serem retornadas.

A imagem a seguir ilustra a LIMITcláusula:

Quando você usa a  LIMITcláusula com um argumento, o MySQL usará esse argumento para determinar o número máximo de linhas a serem retornadas da primeira linha do conjunto de resultados.

Portanto, essas duas cláusulas são equivalentes:

LIMIT row_count;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

E

LIMIT 0 , row_count;

Além da sintaxe acima, o MySQL fornece a seguinte LIMITsintaxe de cláusula alternativa:

LIMIT row_count OFFSET offsetLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

As cláusulas LIMIT e ORDER BY

Por padrão, a SELECTinstrução retorna linhas em uma ordem não especificada. Quando você adiciona a LIMITcláusula à SELECTinstrução, as linhas retornadas são imprevisíveis.

Portanto, para garantir que a LIMITcláusula retorne uma saída esperada, você deve sempre usá-la com uma ORDER BYcláusula como esta:

SELECT 
    select_list
FROM 
    table_name
ORDER BY 
    sort_expression
LIMIT offset, row_count;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A imagem a seguir ilustra a ordem de avaliação da LIMITcláusula no SELECTenunciado:

Exemplos de cláusula LIMIT do MySQL

Usaremos a customerstabela do banco de dados de exemplo para demonstração.

1) Usando MySQL LIMIT para obter as linhas mais altas ou mais baixas

Esta declaração usa a LIMITcláusula para obter os cinco principais clientes com maior crédito:

SELECT 
    customerNumber, 
    customerName, 
    creditLimit
FROM
    customers
ORDER BY creditLimit DESC
LIMIT 5;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

limite mysql obtém valores mais altos

Neste exemplo:

  • Primeiro, a ORDER BYcláusula classifica os clientes por créditos, do maior para o menor.
  • Então, a LIMITcláusula retorna as primeiras 5 linhas.

Da mesma forma, este exemplo usa a LIMITcláusula para encontrar cinco clientes que tenham os créditos mais baixos:

SELECT 
    customerNumber, 
    customerName, 
    creditLimit
FROM
    customers
ORDER BY creditLimit
LIMIT 5;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

limite mysql obtém valores mais baixos

Neste exemplo:

  • Primeiro, a ORDER BYcláusula classifica os clientes por créditos, do menor para o maior.
  • Então, a LIMITcláusula retorna as primeiras 5 linhas.

Como existem mais de 5 clientes com créditos zero, o resultado da consulta acima pode levar a um resultado inconsistente.

Para corrigir esse problema, você precisa adicionar mais colunas à ORDER BYcláusula para restringir a linha em uma ordem única:

SELECT 
    customerNumber, 
    customerName, 
    creditLimit
FROM
    customers
ORDER BY 
    creditLimit, 
    customerNumber
LIMIT 5;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

2) Usando a cláusula MySQL LIMIT para paginação

Ao exibir dados na tela, muitas vezes você deseja dividir as linhas em páginas, onde cada página contém um número limitado de linhas, como 10 ou 20.

Para calcular o número de páginas, você divide o total de linhas pelo número de linhas por página. Para buscar linhas de uma página específica, você pode usar a LIMITcláusula.

Esta consulta usa a COUNT(*) função agregada para obter o total de linhas da customerstabela:

SELECT 
    COUNT(*) 
FROM 
    customers;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
+----------+
| COUNT(*) |
+----------+
|      122 |
+----------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Suponha que cada página tenha 10 linhas; para exibir 122 clientes, você tem 13 páginas. A última 13ª página contém apenas duas linhas.

Esta consulta usa a LIMITcláusula para obter linhas da página 1 que contém os primeiros 10 clientes classificados pelo nome do cliente:

SELECT 
    customerNumber, 
    customerName
FROM
    customers
ORDER BY customerName    
LIMIT 10;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

MySQL LIMIT para exemplo de paginação

Esta consulta usa a LIMITcláusula para obter as linhas da segunda página que incluem as linhas 11 – 20:

SELECT 
    customerNumber, 
    customerName
FROM
    customers
ORDER BY customerName    
LIMIT 10, 10;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Neste exemplo, a cláusula LIMIT 10, 10retorna 10 linhas para as linhas 11 – 20.

3) Usando MySQL LIMIT para obter o enésimo valor mais alto ou mais baixo

Para obter o enésimo valor mais alto ou mais baixo, você usa a seguinte LIMITcláusula:

SELECT select_list
FROM table_name
ORDER BY sort_expression
LIMIT n-1, 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A cláusula LIMIT n-1, 1retorna 1linha começando em row n.

Por exemplo, o seguinte encontra o cliente que tem o segundo maior crédito:

SELECT 
    customerName, 
    creditLimit
FROM
    customers
ORDER BY 
    creditLimit DESC    
LIMIT 1,1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

MySQL LIMIT encontra o enésimo exemplo de linha mais alta

Vamos verificar o resultado. Esta consulta retorna todos os clientes classificados por créditos, do maior para o menor:

SELECT 
    customerName, 
    creditLimit
FROM
    customers
ORDER BY 
    creditLimit DESC;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Como você pode ver claramente na saída, o resultado foi correto conforme o esperado.

Observe que esta técnica funciona quando não há dois clientes com os mesmos limites de crédito. Para obter um resultado mais preciso, você deve usar a DENSE_RANK() função window .

Cláusulas LIMIT e DISTINCT do MySQL

Se você usar a LIMITcláusula com a DISTINCT cláusula, o MySQL interromperá imediatamente a pesquisa quando encontrar o número de linhas exclusivas especificadas na LIMITcláusula.

O exemplo usa a LIMITcláusula com a DISTINCTcláusula para retornar os primeiros cinco estados exclusivos da customerstabela:

SELECT DISTINCT
    state
FROM
    customers
WHERE
    state IS NOT NULL
LIMIT 5;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

MySQL DISTINCT com cláusula LIMIT

Resumo

  • Use a  LIMIT cláusula MySQL para restringir o número de linhas retornadas pela  SELECTinstrução.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *