Ir para conteúdo
Fórum Script Brasil
  • 0

Select Apenas Do Ultimo Inserido


searching_

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0
Guest Visitante

Ah pessoal, consegui dessa forma:

SELEC * FROM tabela ORDER BY id DESC LIMIT1

Ele vai orndenar do último ao primeiro e exibirá apenas um! Ou seja , o último!

Walew ela Força!

Link para o comentário
Compartilhar em outros sites

  • 0

isso é um problema pra mim, se o campo for auto increment aí já detona tudo, porque digamos que eu deletei o último ID e peço pra ele mostrar o último ID, ele vai mostrar o que ainda está na tabela, e não o que foi apagado que é realmente o último, sacaram?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest alex_dias

Olá Hunter! Olá a todos!

Ouro dia postei sobre um prob. parecido, e não obtive solução...e aliás, descobri algo que eu não sabia...e gostaria de compartilhar...

Problema:

Tenho um um Banco ORACLE rodando no SUSE...e uma tabela PROTOCOLOS que é alimentada diariamente pelos cadastradores da empresa. Gostaria de dispor no site da empresa um consulta para que os usuarios entrassem com o numero do protocolo e soubessem a situação do seu protocolo, se já podem ir pegar, coisas desse tipo....pois bem,

Tenho um Servidor Web rodando no DEBIAN com uma base MYSQL em outro computador.

Eu não queria que a consulta fosse feita diretamente no ORACLE, por mais seguro que ele seja!

Solução:

Criei uma Tabela PROTOCOLOS identica lá no MYSQL.

Criei um CRON de 15 em 15 min no SERVIDOR SUSE para exportar os dados da tabela PROTOCOLO do ORACLE para um arquivo TXT e envia-lo a um diretorio lá no Servidor WEB.

Logicamente, criei um CRON de 15 em 15 min(defasado de 5min para não coincidir) no SERVIDOR WEB para importar os dados do TXT para a tabela MYSQL.

Agora sim, faço uma consulta no site!

Tudo ótimo se não fosse uma questão...eu queria saber qual o ultimo protocolo inserido no MYSQL. E minha tabela não é auto_increment pois se fosse, usaria last_insert_id().

Vejam bem...como recuperar o último registro?

Um exemplo para visualizar melhor: PROTOCOLO.TXT

03222#texto1#

05557#texto2#

00652#texto3#

01146#texto4#

Quero retornar 01146, pois esse é o ultimo registro inserido.

Este meu TXT é importado prá minha tabela que cresce de 15 em 15 min, como foi dito antes, e não necessáriamente o úlimo valor 'prot' é o maior, como visto no exemplo.

Bom, um solução do tipo : select max(meu_num) from tb_teste; me retornaria '05557' e portanto não rola!

Daí...o Leandro82 postou:

SELECT * FROM Tabela WHERE IDTabela = LAST_INSERT_ID();
E realmente isto deveria funcionar...mas descobri que todo o problema estava na inserção via TXT. Quando eu faço a importação:
#!bin/sh
mysql -e "LOAD DATA INFILE 'protocolo.txt' ignore into table protocolo fields terminated by '\#' " -u usuario banco

o mysql pega esse TXT e o ordena antes de inserir, ou insere ordenadamente, daí eu nunca vou saber o ultimo numero que estava no TXT...por isso o LAST_INSERT_ID() me retornava o maior ao invés do ultimo...

Então vi que minha tabela fica assim:

PROT TEXTO

___________

00652 texto3

01146 texto4

03222 texto1

05557 texto2

Eu não sabia que isso acontecia...ou eu estou importando de alguma maneira errada? não sei!

A solução então, acho que vai depender de um outro script para comparar a ultima linha do txt, ou algo do tipo, sei lá....se alguém tiver um idéia eu agradeço!

É issso então...só quis compartilhar o que ocorreu comigo...qualquer coisa tamos aí ...até mais.

Alex Dias

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...