Limitar Linhas
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?
SELECT TOP 10 * FROM TABELA, isso me traria as 10 primeiras linhas. Como faço a mesma coisa, mas usando Sql ANSI?
Paulo
Curtidas 0
Respostas
Eniorm
21/05/2008
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
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
GOSTEI 0
Paulo
21/05/2008
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.
GOSTEI 0
Paulo
21/05/2008
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.
GOSTEI 0
Eniorm
21/05/2008
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
GOSTEI 0
Paulo
21/05/2008
Vou caçar alguma coisa na NET e ver se acho uma instrução SQL ANSI 92.
GOSTEI 0
Brunodsr
21/05/2008
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.
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.
GOSTEI 0
Brunodsr
21/05/2008
Desculpem.. corrigindo a segunda query
Select * from
(select * from tabela order by id)
where rownum < 50
Um abraco,
Bruno Rocha
Select * from
(select * from tabela order by id)
where rownum < 50
Um abraco,
Bruno Rocha
GOSTEI 0
Paulo
21/05/2008
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.GOSTEI 0
Brunodsr
21/05/2008
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
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
GOSTEI 0