Buscar Ultimo Registro no SELECT

Pessoal tenho um select para realizar e estou com um problema
ele me traz diversos registros e gostaria que ele me trouxesse o ultimo registro de cada ID, em um caso quando posso filtrar pelo ID eu resolvi assim

porem quando não tenho este filtro não consigo filtrar…
estou usando o postgres 8 e imaginava que ele possuisse alguma função como LAST, mas a não consigo fazer a mesma funcionar nele…

se alguem tiver uma ideia ou saiba alguma função que rode nele e possa me ajudar eu ficaria muito grato.

Abraço a todos!!

Olá jpacheco, vc já tentou usar o método isLast da Classe ResultSet??? Não sei ao certo se resolverá o seu problema, mas é uma sujestão, blz???

while(res.next()){
     if(res.isLast()) {
         //pegar o ultimo registro
     }
}

Taí a dica…

Até mais, phill.

voce pode chamar direto no ResultSet

if(resultSet.last()){
//faz alguma coisa.
}

Bom dia pessoal,
creio que vocês não me entenderam, eu quero resolver este problema no select e não no java, e de qualquer forma acho que vocês não entenderam, irei explicar novamente:

em um select eu posso trazer diversos embarques, cada embarque pode se repetir algumas vezes, pois ele pode repetir porem com data diferente.
Eu gostaria de fazer o select e no select buscar todos os embarques porem sem repeti-los e pegando os embarques que tem a data mais atual…

de qualquer forma muito obrigado.

Se alguem tiver mais alguma ideia…

Abraço a todos!!

Entao voce deve fazer uma select precisa, que retorne apenas o que voce quer. Se a sua select nao consiga fazer isto (id = parametro) voce terá que filtrar com ajuda das classes do JAva.

Sim eu ja tenho meu select que é este:

e é nele que esta o problema pq este ai eu devo fazer uma consulta geral,

no que eu faço a consulta e recebo o ID eu apenas acrescentei um AND

para filtrar pelo ID e coloquei esta clausula

No order BY para trazer o ultimo ID com DESC e pegar apenas um com LIMIT 1,
porem quando não posso efetuar o filtro pelo ID não posso fazer isso.
No mysql creio eu tem o comando LAST passando o ID antes do from que com ele eu posso trazer apenas o ultimo …

mas estou usando o postgres e o mesmo não possui este comando pelo visto…
e não estava qurendo fazer isso no java em vista de ele ter de percorrer muitos registros dependendo o que o select trara…

beleza aí, colega…
quando você disse que os embarques poderiam se repetir e você precisa pegar apenas o mais atual, fiquei pensando que você poderia resolver acrescentando a seguinte cláusula no teu select:

embarques.dt_emissao = 
(select max(sub.dt_emissao)
 from embarques sub
 where sub.ID = embarques.ID)

Essa é a idéia básica, precisa verificar melhor o join entre o select externo e esse sub-select que vai buscar a maior data existente de cada embarque.

Sou novata em Java e Postgree. Há muitos anosprogramava em Clipper e utilizava o DBF como banco de dados.

Minha dúvida é a seguinte: Estou fazendo um teste com o Postgre com mais de 150 milhões de registros. Não criei um campo com ID serial(de propósito) mas preciso pegar o último registro e ver o que foi lançado nele.
As propostas deste foram foram o de usar o ORDER BY … DESC LIMIT 1. Ocorre que para um banco de dados com este tamanho, o retorno é bastante demorado.
Não utilizei a opção MAX pq, conf. dito, não tenho um campo autoincrementável.
Alguém tem outra solução que seja mais rápida?