SQL – Selecionar n linhas de uma consulta

Muitas das vezes precisamos recuperar apenas algumas das diversas linhas retornadas por uma consulta SQL. Por isso, para economizar alguns bytes trafegando pela rede, nada mais fácil do que fazer a consulta só retornar a quantidade de linhas desejadas. Para fazer isso, segue abaixo o comando referente a diversos banco de dados.

SQL SERVER

SELECT TOP n nome_campos FROM nome_tabela

Onde n é o número de linhas desejadas, nome_campos são os campos ou o campo que será retornado e nome_tabela o nome da tabela.

Utilizando este recurso conseguimos também fazer paginação de dados. Por exemplo:

SELECT     TOP 5 nome_campos FROM nome_tabela

WHERE     (campo_chave NOT IN

                   (SELECT TOP 10 campo_chave FROM nome_tabela)

)

Onde 5 é o número de registro por página e 10 é o resultado da multiplicação da quantidade de registros pela página atual. No exemplo, o SQL retornaria os registros da segunda página. Para retornar da terceira bastaria mudar o SQL substituindo o 10 por 15 e assim por diante.

MYSQL

SELECT * FROM TABELA LIMIT n

ou

SELECT * FROM TABELA LIMIT 0, n

No MySQL é ainda mais fácil fazer paginação de dados. Veja.

Ex.:

SELECT * FROM TABELA LIMIT 10, 5

Da mesma maneira que no exemplo do SQL Server, o resultado se aplica a uma paginação de 5 registros por página.
A paginação ocorre então ao mudar o valor 10 para 15, 20, 25 etc… Ou seja multiplicar a núrero da página pela quantidade de registro por página.

FIREBIRD

SELECT FIRST n nome_campos FROM nome_tabela;

Para fazer a paginação e pular os registros utiliza-se a cláusula SKIP.

SELECT FIRST n SKIP x nome_campos FROM nome_tabela;

INTERBASE

No INTERBASE não há o comando FIRST. Usa-se a cláusula ROWS  no lugar.

SELECT nome_campos FROM nome_tabela ROWS n;

Para fazer a paginação e pular os registros utiliza-se a cláusula TO.

SELECT nome_campos FROM nome_tabela ROWS 5 TO 10;

Artigos relacionados

Total de visitas: 2510.
Esta entrada foi publicada em Banco de Dados, Firebird, MySQL, SQL, SQL Server e marcada com a tag , , , , , , , , . Adicione o link permanente aos seus favoritos.

4 respostas a SQL – Selecionar n linhas de uma consulta

  1. Pingback: Selecionando a segunda linha de uma consulta no sql server

  2. Edson disse:

    As informações de linha que você comenta é referente a minha dúvida abaixo?
    Quebrar linha pelas categorias e subtotalizar

    Categoria Frutas <———- Aqui quebra por categoria
    ——————————————————
    Codigo Descricao Quantidade
    ——————————————————
    1010 maçã 10
    2020 banana 9
    5150 abacate 5
    6788 abacaxi 3
    ——————————————————
    27 <——- subtotalizando

    Categoria Perfumaria <—–Aqui quebra por categoria
    ——————————————————
    Codigo Descricao Quantidade
    ——————————————————
    9810 des masc xtrem 25
    7520 col flor lis 20
    3350 hidratante fps 30 19
    2288 batom cereja 10
    3745 batom marrom 7
    5478 col fem luz do sol 7
    8977 col mas Max 6
    6578 des fem blue 5
    1573 necessaire rosa 3
    1008 col rose mask 2
    ——————————————————
    167 <——- subtotalizando

  3. Marcus Siqueira disse:

    Não. Para pegar a quantidade total de cada categoria como no seu exemplo, você deverá fazer um sum e agrupar pelo código da categoria. Por exemplo:

    SELECT cdcategoria, SUM(quantidade) as total FROM produtos GROUP BY cdcategoria
    

    Agora para exibir na ordem somente, basta utilixar o order by

    SELECT cdproduto, nmproduto, quantidade FROM produtos ORDER BY cdcategoria, nmproduto
    

    Mas acho que esta não é a sua dúvida. Se o que você está querendo fazer é um relatório (e eu penso que seja isto), e está fazendo este relatório na mão, você tem várias opções. Você pode primeiro fazer só o select buscando o código e a descrição das categorias e para cada categoria você faz outro sql buscando os produtos com essa categoria. Se você estiver utilizando um software de relatórios como o Crystal Report nem é preciso, basta fazer uma consulta normalmente e mandar agrupar por categoria. Dá pra fazer todas as somas automaticamente. Bom, se quiser que eu explique como fazer no Cristal é só falar.

  4. Robson Carvalho disse:

    E para selecionar somente a segunda linha de uma subconsulta. Tipo, pegar a segunda linha de cada contrato que pagou a segunda mensalidade. Não importanto a quantidade gerada de mensalidades e a quantidade de clientes.

    Exemplo:

    Cliente, Vencimento, Pagamento, ValorPago
    1, 30/01/2011, 10/02/2011, 22,00
    1, 28/02/2011, 01/03/2011, 22,00
    2, 30/01/2011, 30/01/2011, 22,00
    2, 28/02/2011, 10/03/2011, 22,00
    etc, etc

    Quero todos os clientes que pagaram somente a LINHA 2.

    O resultado seria

    1, 28/02/2011, 01/03/2011, 22,00 (Segundo Pagamento)

    2, 28/02/2011, 10/03/2011, 22,00 (Segundo Pagamento)

    Descartando o primeiro pagamento e os demais depois destes. Tem como ser feito isto? Será que poderia me ajudar? Não tenho outro identificador mais facil, como uma coluna Parcela, que poderia ser o numero da parcela, quando desenvolveram isto, não pensaram assim, infelizmente.

Deixe uma resposta

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

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>