Sérgio L. Glovatinski Jr Postado Dezembro 29, 2014 Denunciar Share Postado Dezembro 29, 2014 Olá amigos. Estou com o seguinte quadro. Tenho uma tabela com id, cliente, ip, data, hora Esta tabela é atualizada pelos clientes de tempo em tempo, preciso de um sql para pegar o ultimo envio de cada cliente. O comando que cheguei mais perto foi: SELECT MAX(id) as maxid, id, cliente, ip, data, hora from lista GROUP BY cliente porém o resultado não volta com os dados corretos, vejam: (coloquei a coluna maxid somente para verem como não puxa os dados corretos) Alguém tem uma dica para me ajudar ? Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Dezembro 30, 2014 Denunciar Share Postado Dezembro 30, 2014 Quando se usa group by deve-se utilizar somente os campos que comporão o resultado. Nesta caso, o id, para que você pegue o maior utilizando a função max e o campo cliente que será utilizado pelo group by.Como você quer outros campos, então você vederá fazer um join deste consulta com esta nova que usa os outos campos.Veja abaixo: SELECT l1.id, l1.cliente, l1.ip, l1.data, l1.hora FROM lista l1 INNER JOIN (SELECT l2.cliente, MAX(l2.id) as maxid FROM lista l2 GROUP BY l2.cliente ) l3 ON l3.maxid = l1.id Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DACLA Automação Postado Outubro 24, 2021 Denunciar Share Postado Outubro 24, 2021 (editado) Não testei o desempenho comparado a resposta de Denis Courcy. Mas tenho essa alternativa para o mesmo problema. SELECT * FROM my_table_name WHERE id IN ( SELECT MAX(id) FROM my_table_name GROUP BY cliente /*pode adicionar filtros com HAVING*/ ); Não tenho conhecimento profundo em SQL, mas achei essa abordagem bem simples de entender. Editado Outubro 24, 2021 por DACLA Automação Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Sérgio L. Glovatinski Jr
Olá amigos.
Estou com o seguinte quadro.
Tenho uma tabela com id, cliente, ip, data, hora
Esta tabela é atualizada pelos clientes de tempo em tempo, preciso de um sql para pegar o ultimo envio de cada cliente.
O comando que cheguei mais perto foi:
porém o resultado não volta com os dados corretos, vejam: (coloquei a coluna maxid somente para verem como não puxa os dados corretos)
Alguém tem uma dica para me ajudar ?
Obrigado
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.