Limitar Linhas

21/05/2008

2

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?


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
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira