Update no ultimo registro de uma tabela

6 respostas Resolvido
P

Fala galera !
(MySQL)
Estou tentando aplicar um update no ultimo registrando lançado em uma tabela, porém quando tento, o update está sendo aplicado no primeiro registro, alguém poderia me ajudar ?

SQL

UPDATE bd_sgn.tb_mudancas_atleta SET mudatl_altura=1.80, mudatl_peso=5.0, mudatl_bf=21.0, mudatl_mm=34.5, mudatl_gasto_energetico_repouso=1950.0, mudatl_objetivo_cod=1, mudatl_data_mudanca='2016-01-01' where mudatl_peratl_cod=1 order by mudatl_peratl_cod desc limit 1;

Já tentei “asc” ao invés do desc (apenas a nível de curiosidade, teoricamente deveria ser desc) mas não obtive exito, o que estou errado ?
Vale salientar que existe vários registro para mudatl_peratl_cod=1, gostaria de atualizar apenas o ultimo, alguma luz ?

6 Respostas

Paulo_Silveira

Voce tem uma chave primaria auto increment nessa tabela? dá um desc bd_sgn.tb_mudancas_atleta e mostra pra gente.

P

Opa parceiro, obg pela atenção.
Então, ela não é de auto increment não e tbm não possui chave primária, as características da coluna “mudatl_peratl_cod” é não poder receber valores nulos e é do tipo inteiro.

select * from bd_sgn.tb_mudancas_atleta order by mudatl_peratl_cod=1 desc;

1 1.8 5 21 34.5 1950 1 2016-01-01
1 1.75 83 31.5 32.5 1950 1 2015-12-29
1 1.75 80 31.5 32.5 1950 1 2015-12-29
1 1.75 90 35 35 1950 1 2016-01-01
1 1.75 91 35 35 1950 1 2016-01-01
1 1.75 90 35 35 1950 1 2016-01-01
1 1.75 100 35 35 1950 1 2016-01-01

Note que a ultima deveria ser 1 1.75 100 35 35 1950 1 2016-01-01

Quando tento aplicar o

**UPDATE bd_sgn.tb_mudancas_atleta SET mudatl_altura=1.80, mudatl_peso=5.0, mudatl_bf=21.0, mudatl_mm=34.5, mudatl_gasto_energetico_repouso=1950.0, mudatl_objetivo_cod=1, mudatl_data_mudanca='2016-01-01' where mudatl_peratl_cod=1 order by mudatl_peratl_cod desc limit 1;**
Ele muda

**1 1.8 5 21 34.5 1950 1 2016-01-01**

:confused:

pmlm

Se mudatl_peratl_cod=1 não faz sentido ordernar depois por mudatl_peratl_cod, já que será sempre 1. Deves querer colocar aqui outra coluna, certo?

P

Opa amigo, obg pela atenção.
Então, no caso essa sql ai será jogada em um atributo de uma classe DAO, esse “1” seria um “?”, ou seja, não será sempre 1 não, estou tentando arrumar a sql para depois começar a usa-la na minha classe DAO.

pmlm
Solucao aceita

Não é isso que quis dizer. Se tens vários registos com mudatl_peratl_cod=1, a ordenação por esse campo não te garante que é devolvido o último registo. A questão é… como é que sabes qual é o último registo?

P

Poxa kra, é verdade, eu estava usando a lógica errada, vc tem razão, consegui fazer o que queria aqui, usando desc limit referente a coluna date, porém aqui alterei para datetime, para caso tenha mais de uma alteração no mesmo dia.
Muito obg por esclarecer minhas ideias.
Vlw mesmo
:-]

Criado 29 de dezembro de 2015
Ultima resposta 30 de dez. de 2015
Respostas 6
Participantes 3