Dificuldade de usar o MAX

Olá galera, eu estou tentando fazer uma query para resgatar a maior data de uma tabela e seu respectivo id, porem o id nao vem o maior e sim o primeiro. Alguem sabe o que estou fazendo de errado:

SELECT max(data), id_horario
FROM horario
WHERE data <= curdate();

Pra essa query que postou estar funcionando, imagino que esteja usando o Mysql.
(Em outros bancos costuma dar erro).

Mas para o que você quer a query é um pouco diferente.

Você quer o id da maior data. Então a query é:


  SELECT id FROM tabela WHERE data = (  SELECT MAX(data) FROM tabela )

Obrigado AbelBueno, mas na verdade eu quero a maior data e horario antes de hoje mas fazendo da forma que me mostrou, incluido na subquery a data eu ainda tenho 2 resultados. Pensei que tivesse alguma solucao sem ser com subquery. Vou tentar aqui seguindo o seu reciocinio e posto o resultado pra voce ver…

Mais uma vez muito obrigado.

Seguindo seu raciocinio consegui resolver assim… voce acha que ta legal?

SELECT id FROM tabela WHERE hora = (SELECT MAX(hora) FROM tabela WHERE data = ( SELECT MAX(data) FROM tabela WHERE data <= curdate() ))

Olá parceiro! Tudo bom?
Neste exemplo eu consegui obter a maior data sem a necessidade da função max().
Teste a seguinte query e veja se atende a sua necessidade:

SELECT id, data FROM tabela ORDER BY data DESC LIMIT 1;

Eu fiz esse teste em uma tabela com mais de 1 milhão de registros e a resposta foi satisfatória.

[quote=paulochaves]Olá parceiro! Tudo bom?
Neste exemplo eu consegui obter a maior data sem a necessidade da função max().
Teste a seguinte query e veja se atende a sua necessidade:

SELECT id, data FROM tabela ORDER BY data DESC LIMIT 1;

Eu fiz esse teste em uma tabela com mais de 1 milhão de registros e a resposta foi satisfatória.[/quote]

Serviria sim se eu nao tivesse que resgatar o ultimo dia do ultimo horario de agora pra traz e nao de toda tabela. Eu resolvi com a quela query grandinha logo a cima. Mas vou entar aplicar a sua logica pois pode ficar melhor mesmo.