Como selecionar o enésimo registro mais alto no MySQL

Resumo : neste tutorial, você aprenderá como selecionar o enésimo registro mais alto em uma tabela de banco de dados usando várias técnicas.

É fácil selecionar o registro mais alto ou mais baixo na tabela do banco de dados com a função MAX ou MIN . No entanto, é um pouco complicado selecionar o enésimo registro mais alto. Por exemplo, obtenha o segundo produto mais caro da tabela de produtos.

Para selecionar o enésimo registro mais alto, você precisa executar as seguintes etapas:

  • Primeiro você obtém os n registros mais altos e os classifica em ordem crescente. O enésimo registro mais alto é o último registro no conjunto de resultados.
  • Em seguida, você classifica o conjunto de resultados em ordem decrescente e obtém o primeiro.

A seguir está a consulta para obter os enésimos registros mais altos em ordem crescente:

SELECT 
    *
FROM
    table_name
ORDER BY column_name ASC
LIMIT N;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A consulta para obter o enésimo registro mais alto é a seguinte:

SELECT 
    *
FROM
    (SELECT 
        *
    FROM
        table_name
    ORDER BY column_name ASC
    LIMIT N) AS tbl
ORDER BY column_name DESC
LIMIT 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Felizmente, o MySQL nos fornece a cláusula LIMIT que restringe o número de linhas no conjunto de resultados retornado. Você pode reescrever a consulta acima como a seguinte consulta:

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

A consulta retorna a primeira linha após n-1 linha(s), para que você obtenha o enésimo registro mais alto.

Obtenha o enésimo exemplo de registro mais alto

Por exemplo, se você deseja obter o segundo produto mais caro (n = 2) da productstabela, use a seguinte consulta:

SELECT 
    productCode, productName, buyPrice
FROM
    products
ORDER BY buyPrice DESC
LIMIT 1 , 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Aqui está o resultado:

MySQL enésimo exemplo mais alto

A segunda técnica para obter o enésimo registro mais alto é usar a subconsulta MySQL :

SELECT *
FROM table_name AS a 
WHERE n - 1 = (
	SELECT COUNT(primary_key_column) 
	FROM products b 
	WHERE  b.column_name > a. column_name)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Você pode obter o mesmo resultado usando a primeira técnica para obter o segundo produto mais caro da seguinte consulta:

SELECT 
    productCode, productName, buyPrice
FROM
    products a
WHERE
    1 = (SELECT 
            COUNT(productCode)
        FROM
            products b
        WHERE
            b.buyPrice > a.buyPrice);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Neste tutorial, mostramos como selecionar o enésimo registro em uma tabela de banco de dados usando a cláusula LIMIT no MySQL.

Deixe um comentário

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