SQL - Selecionar Range a partir de um ID
17/02/2020
0
Exemplificando.
Objetivo: Quero 5 registros depois do ID 54;
Resultado:
74 - Antonio Figueredo Lemos
76 - Cristiane Santos Silva
59 - Eliane Martins Ribeiro
58 - Elson Alves Pereira
64 - Fagna Feliciano da Silva
Alguém me ajuda?
Image de exemplo: https://i.stack.imgur.com/S5H6t.png
Joao
Post mais votado
18/02/2020
SELECT FIRST 3 -- AQUI VOCÊ INDICA QUANTOS REGISTROS QUER APRESENTAR TAB.ID, TAB.NOME FROM ( SELECT (SELECT COUNT(T2.NOME) FROM TABELA T2 WHERE T2.NOME <= T.NOME) LINHA, T.ID, T.NOME FROM TABELA T ORDER BY T.NOME ) TAB WHERE TAB.LINHA >= 3 -- AQUI VOCÊ INDICA A PARTIR DE QUAL LINHA QUER APRESENTAR
ou assim, se você não sabe o número da linha e tem somente o ID:
SELECT FIRST 3 -- AQUI VOCÊ INDICA QUANTOS REGISTROS QUER APRESENTAR TAB.ID, TAB.NOME FROM ( SELECT (SELECT COUNT(T2.NOME) FROM TABELA T2 WHERE T2.NOME <= T.NOME) LINHA, T.ID, T.NOME FROM TABELA T ORDER BY T.NOME ) TAB WHERE TAB.LINHA >= (SELECT T3.LINHA FROM ( SELECT (SELECT COUNT(T2.NOME) FROM TABELA T2 WHERE T2.NOME <= T.NOME) LINHA, T.ID, T.NOME FROM TABELA T ORDER BY T.NOME ) T3 WHERE T3.ID = 76) -- AQUI VOCÊ INDICA O ID QUE QUER USAR COMO FILTRO
Emerson Nascimento
Mais Posts
17/02/2020
Emerson Nascimento
SELECT FIRST 5 * FROM TABELA WHERE ID > 54 ORDER BY NOME
SQL Server
SELECT TOP 5 * FROM TABELA WHERE ID > 54 ORDER BY NOME
17/02/2020
Joao
SELECT FIRST 5 * FROM TABELA WHERE ID > 54 ORDER BY NOME
SQL Server
SELECT TOP 5 * FROM TABELA WHERE ID > 54 ORDER BY NOME
Agradeço pela resposta Emerson, porém esse select não funciona. No caso desse resultado aqui:
74 - Antonio Figueredo Lemos
76 - Cristiane Santos Silva
59 - Eliane Martins Ribeiro
58 - Elson Alves Pereira
64 - Fagna Feliciano da Silva
O select só ia pegar os IDs menores que 54, ou seja ia eliminar todos os registros acima.
17/02/2020
Emerson Nascimento
porque a condição diz pra pegar os registros cujo ID seja MAIOR que 54, então não entendi quando você diz que
17/02/2020
Joao
porque a condição diz pra pegar os registros cujo ID seja MAIOR que 54, então não entendi quando você diz que
Ah, perfeito, saquei! Porém mesmo assim ainda não dá, porque pode ter um registro que tenha o ID menor que 54 mas que faça parte do resultado por estar em ordem alfabética, logo será eliminado :/
Por exemplo:
Essa é a ordenação por NOME
76 - Cristiane Santos Silva
59 - Eliane Martins Ribeiro
58 - Elson Alves Pereira
64 - Fagna Feliciano da Silva
Caso eu queira os 3 registros depois do ID 76, o resultado seria esse:
59 - Eliane Martins Ribeiro
58 - Elson Alves Pereira
64 - Fagna Feliciano da Silva
Porém com seu código ele eliminaria todos esses, pois todos os ID são menores que 76.
17/02/2020
Emerson Nascimento
18/02/2020
Emerson Nascimento
(SELECT COUNT(T2.NOME) FROM TABELA T2 WHERE T2.NOME <= T.NOME) LINHA,
você pode colocar
ROW_NUMBER() OVER (ORDER BY T.NOME) LINHA,
20/02/2020
Joao
(SELECT COUNT(T2.NOME) FROM TABELA T2 WHERE T2.NOME <= T.NOME) LINHA,
você pode colocar
ROW_NUMBER() OVER (ORDER BY T.NOME) LINHA,
Agora deu certo, muito obrigado amigo :D
Clique aqui para fazer login e interagir na Comunidade :)