Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como limitar linhas em um conjunto de resultados MySQL

Problema:


Você gostaria de limitar o número de linhas em um conjunto de resultados no MySQL.

Exemplo:


Nosso banco de dados tem uma tabela chamada student com dados nas colunas id , first_name , last_name e age .
id first_name last_name idade
1 Steven Watson 25
2 Lisa Anderson 19
3 Alice Moleiro 19
4 Maria Marrom 25
5 Lucy Watson 25
6 Michael Jackson 22

Vamos selecionar os nomes completos e as idades dos alunos, mas limitar as linhas retornadas a três.

Solução:

SELECT first_name, last_name, age
FROM student
LIMIT 3;

Segue o resultado da consulta:
id first_name last_name idade
1 Steven Watson 25
2 Lisa Anderson 19
3 Alice Moleiro 19

Discussão:


A cláusula LIMIT limita o número de linhas no conjunto de resultados. Ele é usado na instrução SELECT, geralmente no final da instrução. (Mesmo ORDER BY deve ser listado antes de LIMIT.)

O único argumento necessário é o número de linhas a serem exibidas. Em nosso exemplo, LIMIT 3 produziu um conjunto de resultados contendo três linhas. A menos que você especifique o contrário com o argumento OFFSET, esta função sempre retornará o primeiro n linhas que atendem aos requisitos de consulta.

O argumento OFFSET opcional de LIMIT é colocado antes do argumento que indica o número de linhas retornadas. Indica a posição da primeira linha retornada por LIMIT (ou seja, '0' é a primeira linha, 1 é a segunda linha, etc.). O deslocamento e o número de linhas são separados por uma vírgula.

A consulta retorna os mesmos registros da consulta anterior porque o deslocamento é zero. (Zero é o valor de deslocamento padrão.)
SELECT first_name, last_name, age
FROM student
LIMIT 0, 3;

Nessas consultas, as linhas de resultado não são ordenadas. Se você quiser selecionar três linhas de um conjunto de resultados classificado, use ORDER BY:
SELECT first_name, last_name, age
FROM student
ORDER BY age DESC, last_name, first_name
LIMIT 1,3;

Aqui, estamos primeiro ordenando as linhas por idade (decrescente), depois sobrenome e depois nome. Usamos o valor de deslocamento para iniciar na segunda linha retornada e limitamos os resultados a três linhas:
first_name last_name idade
Lucy Watson 25
Steven Watson 25
Michael Jackson 22

Essa consulta primeiro classifica as linhas de acordo com a coluna de idade em ordem decrescente. Em seguida, classifica por last_name e first_name em ordem ascendente. Se você olhar para a tabela, verá que os alunos mais velhos (Steven, Lucy, Mary) têm 25 anos. No entanto, Mary é omitida porque ela é a primeira linha e o deslocamento é 1 (ou seja, estamos começando com a segunda linha). Lucy agora é a primeira porque seu primeiro nome vem antes do de Steven. (Steven e Lucy têm o mesmo sobrenome, então sua ordem é determinada pelo primeiro nome.) Michael tem 22 anos, o que o torna o próximo aluno mais velho e o último das três fileiras retornadas.