Selecionando a segunda linha de uma consulta no sql server 5


Para selecionar apenas a segunda linha de uma consulta no SQL Server basta utilizar alguns artifícios como limitar a quantidade de registros retornados excluindo também os registros indesejados. Para isto utilizaremos o TOP e o NOT IN. Já expliquei aqui um pouco sobre estes comandos, inclusive em outras linguagens.

Veja um exemplo.

Do mesmo modo, para selecionar a terceira, quarta ou qualquer linha basta alterar o valor do TOP da sub-select.
Por exemplo, para pegar a 15ª linha faça:

sql-server

Related Posts Plugin for WordPress, Blogger...
  • Caroline

    Muito obrigada pela dica! Ajudou muito, procurei vários sites mas nunca encontrava uma solução, testei sua sugestão e funcionou perfeitamente! Você postou isso em 2008 e me serviu hoje em 2014 rs, obrigada pela contribuição!

    • Ola Carol. Fico feliz em ter ajudado. Obrigado pela visita e pelo comentario.

  • Nilton

    Ola Marcus, tudo bem… Estou com um problema para selecionar alguns itens de uma tabela, não conheço muito SQL mas fiz uma query para buscar os projeto da tabela. O problema é que se o projeto tiver revisão aparece todas elas. Já usei Max(), Selct Distinct e nada. Você pode me dizer se não existe um comando que verifique somente última revisão dos projetos.

    • Bom, deixa eu ver se entendi. Você tem uma tabela que armazena projetos mas esses registros são duplicados cada vez que o projeto é alterado e um campo de revisão serve pra definir qual é o registro atual. Imagino que sua tabela tenha um campo identificador (a chave primária) auto-incrementada e um campo com o código do projeto (que repete).

      Assim sendo se sua tabela possui esses campos
      Projeto {id: int, codigo: string, revisao: int, …}

      Para pegar somente a última revisão de cada registro baseada no campo código do projeto você terá que fazer uma subquery. O SQL abaixo deve funcionar.

  • Ramon

    Boa tarde,

    Cara fiz a consulta porem esse select :

    SELECT TOP 1 nome_dos_campos FROM nome_tabela
    WHERE (campo_chave NOT IN
    (SELECT TOP 1 campo_chave FROM nome_tabela)
    )

    Me retornou a linha 1. Pode me ajudar ? Grato