Limitar Linhas

21/05/2008

0

Como faço para trazer apenas determinado numeros de linhas em uma Query usando Sql ANSI? Ex: No Transact-Sql eu usaria o Top, tipo:
SELECT TOP 10 * FROM TABELA, isso me traria as 10 primeiras linhas. Como faço a mesma coisa, mas usando Sql ANSI?


Paulo

Paulo

Responder

Posts

21/05/2008

Eniorm

posso estar errado mas isso varia de banco para banco?

por exemplo no [b:d53aa1fa3b]Firebird [/b:d53aa1fa3b]eu uso assim

[b:d53aa1fa3b]SELECT FIRTS 50 FROM TABELA[/b:d53aa1fa3b]

me tras os primeiros 50 registros, ou

[b:d53aa1fa3b]SELECT FIRST 10 SKIP 50 FROM TABELA[/b:d53aa1fa3b]

me tras os primeiros 10 registros após saltar 50 registros da tabela.

abraço


Responder

21/05/2008

Paulo

Valeu Enio, é isso mesmo, mas essa sintaxe funciona em outros bancos? Aqui no momento só tenho FB, apesar de usarmos Oracle aqui, mas só testei no FB e funcionou.


Responder

21/05/2008

Paulo

Acabei de testar no Oracle e não funcionou. Gostaria de saber se tem alguma coisa assim em SQL ANSI, ou seja, pra todos os bancos.


Responder

21/05/2008

Eniorm

Acabei de testar no Oracle e não funcionou.


foi oq eu pensei é padrão do firebird, vc vai ter que pesquisar por quais são os comandos que o Oracle possui para tal finalidade. Essa eu fico te devendo rsrsrs

abraço


Responder

26/05/2008

Paulo

Vou caçar alguma coisa na NET e ver se acho uma instrução SQL ANSI 92.


Responder

27/05/2008

Brunodsr

Use o rownum do oracle.

Esses comandos nao sao ansi, eles sao rotinas de banco. É bom sempre que for usar algo do tipo, procurar no manual do banco. Abaixo o exemplo.

select * from tabela
where rownum < 50

Obs.: Se vc ordenar os dados o rownum nao sera reordenado e vc vai precisar de um subselect. Abaixo o exemplo2:

Select * from
(select * from tabela where rownum < 50 order by id)
where rownum < 50

Espero ter ajudado.


Responder

27/05/2008

Brunodsr

Desculpem.. corrigindo a segunda query

Select * from
(select * from tabela order by id)
where rownum < 50

Um abraco,
Bruno Rocha


Responder

29/05/2008

Paulo

Bruno, Rownum só funciona no Oracle. Eu gostaria de algo que servisse em qualquer banco, ou seja, usando SQL ANSI 92 ou 99.
Sql Server >> TOP Firebird >> First Oracle >> Rownum MySql >> Limit
Mas eu gostaria de algo do SQL padrão e não específico, se houver.


Responder

02/06/2008

Brunodsr

Olá Paulo!

Ví o seu post agora. Essas funções são próprias dos bancos e inclusive implementadas de formas diferentes, como o cast, convert, case, decode, TO_DATE etc. Cada banco implementa de uma forma.

Como falei em um post anterior, é sempre bom dar uma olhada no manual do banco que vc tá usando p/ verificar se ele suporta a função desejada e qual a sintaxe correta.

Um abraço


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar