Update no ultimo registro de uma tabela

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 ?

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

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:

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?

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.

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?

1 curtida

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
:-]