Utilizando a claúsula TOP em SQL

outubro 30, 2007

Já expliquei aqui no blog como selecionar uma porcentagem de registros, mas não expliquei como funciona a claúsula TOP sem o PERCENT (indicativo de porcentagem).

O TOP sem o PERCENT retorna os primeiros registros conforme o número especificado após a clausula.

SELECT TOP 50

*

FROM

Cliente

A instrução acima irá informar os primeiros 50 clientes retornados na consulta. Muitos utilizam o TOP quando necessitam retornar o maior / menor registro de uma tabela, criando uma instrução similar a esta com um TOP 1 e ordenando por decrescente / ascendente para se obter o resultado. Há uma outra forma de se obter o mesmo resultado consumindo menos recursos, basta substituir pelo MAX / MIN, mas isto ficará para um próximo artigo.

4 Respostas to “Utilizando a claúsula TOP em SQL”

  1. washington Says:

    olá amigo, vi o seu post achei legal, mas nao conseguir fazer ele funcionar no banco de dados firebird,gostaria de saber o comando top funciona no firebird, o comando foi o seguinte:
    SELECT TOP 50 PERCENT
    CODIGO,NOME FROM PRODUTOS

    DAVA ASEGUINTE MENSAGEM :
    Invalid token.
    Dynamic SQL Error.
    SQL error code = -104.
    Token unknown – line 1, column 12.
    50.

    . PESQUISEI MAIS SOBRE O TOP OU OUTRO COMANDO E DESCOBRIR O ‘FIRST’ ESSE FUNCIONOU NO LUGAR DO TOP , VC PODERIA DA UM TOQUE SOBRE O PQ DE NAO FUNCIONAR O TOP.

  2. Alexandre Says:

    Quando for fazer um TOP 20 , ele lê as últimas vinte, certo ? Vamos imaginar a seguinte situação: Eu vou criar 2 consultas… um que é o TOP 45 (consulta1) e outro que vai do TOP 45 ao TOP 90 (consultas2) sendo que os os ID´s 10 ao 20 foram apagados . Como faço para ele ler por exemplo da 45º (Quadragésima quinta) ID até a 90º (nonagésima) na consulta2 ? Pois se colocar a instrução WHERE (id >= 45) AND (id = 45) AND (id <= 90) para gerar um outro arquivo XML , ele lerá da 45 a 90 …. Ou seja … do 45 ao 55 ele informará em 2 consultas em duplicidade .

  3. Kurt Kobin Says:

    Boa tarde,

    Uma instrução em SQL como variavel defenida na instrução e outra a pedido do utilizador, não deveria dar o mesmo valor?

    A Instrução é esta:
    Transform Sum(s1.Consumo) as Peso

    Select
    S1.Material,
    QRamas.`Texto breve material` as Nome
    From
    (SELECT
    MB51Cons.Material as Material,
    Year(MB51Cons.Dtlçto) as Ano,
    sum(MB51Cons.`Qtd UM registro`)*’-1′ as Consumo
    FROM MB51Cons MB51Cons
    Where Year(MB51Cons.Dtlçto)>=2011 and Month (MB51Cons.Dtlçto) <=3
    Group By MB51Cons.Material, Year(MB51Cons.Dtlçto)) as S1
    Inner Join QRamas ON S1.Material=QRamas.Material
    Group By S1.Material,
    QRamas.`Texto breve material`
    Pivot ano

    Na String " Month (MB51Cons.Dtlçto) <=3" se colocar a pedido do utilizador " Month (MB51Cons.Dtlçto) <=[?] " os valores dão completamente diferentes..

    Obrigado

    Kurt_Kobin

  4. Adilson Banterli Says:

    Prezado bom dia. Tenho uma tabela no access com vários registros. Preciso resgatar os 5 deputados mais votados por municípios. Obrigado.


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: