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 products
tabela, 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 )
Aqui está o resultado:
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 )
Neste tutorial, mostramos como selecionar o enésimo registro em uma tabela de banco de dados usando a cláusula LIMIT no MySQL.