Olá pessoal estou com um projeto porém tenho que fazer uma consulta e nela retornar o a "última linha" ou último registro inserido no banco de dados. Desde já peço desculpas desde já pelo post nesse grupo em específico pois utilizo o banco de dados PostgreSQL, mas por acreditar que a sintaxe seja - quem sabe a mesma (para esse critério) ou - parecida com os comandos do Postgres. Fiz inúmeros testes utilizando ORDER BY e DESC LIMIT 1 mas ao invés de retornar o último , retorna o primeiro. Agradeço muito qualquer ajuda orientação e/ou sugestão.

Exibições: 36988

Respostas a este tópico

select top 1

order by [nome da coluna] desc

tenta o seguinte:

select max(campo_id) from tabela

Olá Clayton fiz um teste aqui mais acho que é a sintaxe do Postgres que não reconhece o TOP, não sei se poderia ser também o problema, mas vi em apenas um site uma pessoa dizendo que o campo da minha chave primária teria que ser do tipo SERIAL para funcionar, por conta do auto incremento ele pegaria o maior valor da última sessão. Minha chave primária é do tipo INTEGER geradas automaticamente pelo programa antes de fazer o INSERT. Assim eu insiro o código que ele gerou, obrigado por responder.

Clayton Novaes disse:

select top 1

order by [nome da coluna] desc

o que vc quer fazer?

inserir um registro e retornar o id?

essa a sintaxe para o postgree

SELECT * FROM [TABELA] ORDER BY [CAMPO] DESC LIMIT 1

Opa Clayton, de tanto testar ontem vários modos de fazer a consulta aqui, consegui, deu certo, graças a Deus, é que tenho uma tabela Clayton chamada movimento nela eu tenho os campos: cod_movimento (que é minha chave primária), saque, saldo, deposito, codigo_conta (que é minha chave estrangeira). A ideia que eu tinha era toda vez que houvesse um depósito, por exemplo, ele iria registrar esse valor e já atualizar o campo saldo, e quando fizesse um saque também. Mas consegui Clayton fazer a seleção do último registro de cada cliente pela data da última movimentação de cada um deles, assim consigo agora sempre pegar o último registro de cada cliente. Muito obrigado mesmo.

Clayton Novaes disse:

essa a sintaxe para o postgree

SELECT * FROM [TABELA] ORDER BY [CAMPO] DESC LIMIT 1

Gabriel obrigado por responder,

Não sabia que tinha como fazer o seguinte também SELECT * FROM movimento WHERE data = (SELECT * FROM movimento WHERE codigo_movimento = codM). Eu precisava saber como selecionar o último registro ou última movimentação de cada cliente, consegui fazendo o SELECT a cima. Obrigado.

Gabriel Prado disse:

tenta o seguinte:

select max(campo_id) from tabela

Como vc conseguiu fazer para cada cliente?

Preciso buscar o ultimo registro para cada processo mais so busca o ultimo geral.

SELECT * FROM tbsaidaprocesso  ORDER BY idsaiprocesso DESC LIMIT 1  - o meu esta assim mais quero que ele busque o ultimo de cada processo e não o ultimo de todos.

Dez de já obrigado!


Obrigada Gabriel, sua resposta me ajudou no que eu estava precisando...

Simples e rapido... Valeu!!!
Gabriel Prado disse:

tenta o seguinte:

select max(campo_id) from tabela

RSS

© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço